Skip to main content

Full text of "CPC Magazine (French) Issue 023"

See other formats


REVUE DES STANDARDS AMSTRAD 



.,.■.„■' 



JEU : 
30 SNAKE 

EDUCATIF : f }| 
RELIEF 



UTILITAIRE : 

MONITEUR 
, ASSEMBLEUR 
I DESASSEMBLEUR 



M1365 23 20,00F 



I 









tM&m 



MENSUEL N° 23 - JUIN 1987 



AMSTRAD 

VERS UN MONOPOLE 



.EDITO 




Depuis 7 ans que nous sommes dans la presse, nous en avo 
rachat en passant par les pressions nombreuses ei diverses 
tes, pas roui à fait seuls. Notre avocat du Barreau de Rennes n'y est pas étanger. 
Nous avons toujours entendu être maîtres de nos jugements. Plutôt disparaître que se eo 
se battre. 
Aujourd'hui, la société Amstrad international nous ordonne de changer l'un de nos titres. En l'occurrence AMS 
TAR, le journal des jeunes dont le succès est évident aujourd'hui. On y parle de confusion possible que l'on peut 
l'aire croire qu'Amstrad participe à la Rédaction et la cautionne (les lecteurs qui suivent CPC depuis ses débuts 
savent à quoi s'en tenir sur ce sujet !). 

On y parle aussi de contusion préjudiciable à la marque. Les lecteurs apprécieront l'argumentation. 
Notre confrère Amstrad magazine, qui pourtant a négocié fort cher le titre, risque lui aussi, un jour, de se voir 
confronter à des problèmes. Un exemple ? Nous avons toujours loué sa maîtrise dans l'organisation des salons 
Amstrad expo. II semble que désormais Amstrad France veuille reprendre à son compte cette exposition. "Merci 
Amstrad magazine. Vous nous avez préparé le terrain,, à nous maintenant", telle est peut-être la pensée des diri- 
geants d'Amstrad, Dans tous les cas, le lecteur remarquera l'élégance du geste et gageons que les exposants seront 
très largement sélectionnés, si cet état d'esprit n'est pas modifié. 

Aussi avons-nous pu apprendre que la société Amstrad souhaitait meure en place SA propre revue Amstrad-PC. 
A l'évidence, il faut faire le vide avant ! 

L'expérience passée montre que les importateurs ou fabricants qui tentèrent de lancer leur propre revue furent 
peu crédibles, tant sur le contenu que sur la publicité ! Les parutions furent souvent marginales. En agissant aini 
il n'y a plus de contradicteurs, Seuls certains produits "bien pensants" peuvent être mis en av. 
Ceci représente un immense danger à deux niveaux ; 

— Celui de l'indépendance de la presse et de l'information déjà parfois sujettes à caution par les lecteurs. 

— Amstrad international est anglais et l'on peut craindre que les stratèges d'Outre-Manche préparent dès 
lenanl les ouvertures du Marché commun en 1992. 



vlS- 



Pendanl ce temps, les Français se battent sur des sujet 
I e Marche de l'Europe, c'est demain ! 
1 spéro® avec la France. 



Florence MlïLLET 

SjIvùp FAUREZ 

Fond al eu rs 



;ertes importants, mais qui ne s 




Actualité: 
Listing anl 
Bulletin d'abonnement ....... \ ... . 

Cao al) ............ .\..^.., _...,. 

Toui sur sound 

Agendor ........... , .... ". .■ , 

Les fractales en Logo 

Le salon de Lyon. . . ^ ................ . 

Les interfaces DK'Tronics ........ 

Un port d'entrée-sortie économique 

3t> Snake ...... 

Oclode , . ...',. . 

RSX Char : . .'..-.' 

Bug, où es-tu ? ......... .'....-- 

Branchez le turbo 

fnoto sprite 

Relief 

Banc d'essai des logiciels 

Trucs ci astuces ... 
tiation à CP/i\l . 
Moniteur-assembleu 
Restauration 



. 6 

8 

8 

10 

18 

20 

.23 

.28 

30 

34 

36 

.48 

50 

,52 

.57 






ast une Dublicatlon du 




F^^B| CPC 




(&k M groupe de presse FAUREZ- 

l**'_iM MELLFT 


Distribué en Suisse par SEMAPHORE 
Tel 022 54.11,95 




I 


et en Belgique par COMPUTER 






MARKET 


Directeur de publication 


Photocomposition 


170, rue Antoine Dansaert 


Sylvio FAUHEZ 


SORACOM 


1000 BRUXELLES - tel 513.53.58 


Rédacteurs en chef 


Nathalie CHAPPE - Béatrice JEGU 




Marcel LE JEUNE - Denis BONOMO 


Photogravure couleur 


Régie publicitaire Chef de publicité 


iédflctlort 


BRETAGNE PHOTOGRAVURE 


IZARD CREATION Patrick SIONNEAU 


Catherine VIARD 


IMPRESSION : 


15, rue St-Melaine Assistante 


Olivier SAOLETTI 


Presse de Bretagne 


35000 RENNES Fabienne JAVELAU 


Secrétaire de rédaction 


Secrétariat-Rédaction 


Tél. 99.38.95.33 


Carence MELLET 


SORACOM Editions 




directeur de fabrication 


La Haie de Pan 




Edmond COUOERT 


35170 BRUZ 


ZïJ'b'itZ'i'w iïS a .i*Z* £vw!hu*^ 


Maquette 


RCS Rennes B319 816 302 




Jean-Luc AULNETTE - Patricia 


Tel 99 52.98.11 + 


•>»<*<>*> 


MANGIN 


TélexSORMHZ741.042F 




Abonnements - Vente au 


Serveur 3615 + MHZ 


ce numéro b*S^^^ U trîr U gr3 P ndo l 'Ban, I 'du 


numéro 


CCP Rennes 794.17V 


droil d'auteur Da oa (ail. ils ne pouvant «Ira imités. 


Catherine FAUREZ 


Distribution NMPP 


ccnlrefalto, ooplôs par quoique procédé que » soit. 


Tel 99.52.98.11 


Dépôt légal à parution 


Société SORACOM si de l'auteur concerné. Les opi- 


Service rassort - Réseau 


CodeAPE5)20 


nion* enpnrnôae n'enyaoonl que la responsabilité 


Gérard PELLAN 






Tél. vert 05 48.20.98 




no peuvent être réalisés que dans un bul privé du 


nspeclion des ventes : 


PL-mliinletT AMSTRAD GB ei J'AMSTUM) 


saBnUfiqua mai» non commercial. Cas réserves 
sappltouent également au< boleiob publié* dan» 


Christian CHOUARD 


FRANCE.-., 





ACTUALITES 



SECURITE INFORMATIQUE 

Les entreprises utilisatrices de 
systèmes informatisés doivent 
parfois faire face à de lourdes per- 
tes dues à un sinistre informatique d'or- 
dre matériel ou immatériel. 
Le Salon Infosec devant se dérouler les 
2, 3 et 4 juin prochains réunira 150 
exposants qui contribuent, chacun dans 
leur domaine, à la sécurité des systèmes 
informatiques. En plus des stands, les 
personnes intéressées pourront suivre 
des sessions de formation présentant les 
méthodes et moyens concrets à mettre 
en œuvre pour assurer la sécurité d'un 
ensemble informatique. 
Lieu de ce salon INFOSEC 67 : Palais des 
Congrès, Porte -Mai Ilot, 75017 PARIS. 

ENSEIGNEMENT ASSISTE 
PAR ORDINATEUR 




AMSTRAD RECOMPENSE 

Cette année, Amstrad a été 
sélectionnée pour recevoir le tro- 
phée "Tertiel" et ce pour la per- 
formance de son micro-ordinateur... 
Il faut savoir que le trophée "Tertiel" a 
pour objectif de mettre en valeur des pro 
duits qui sont d'incontestables réussites 
et Amstrad l'a prouvé en 1 986 en deve- 
nant le numéro un de l'informatique 
domestique. 

TROPHEE DE 
L'INFORMATION 1987 

Du 7 au 10 mai derniers, s'est 
déroulé la Coupe de l'Informati- 
que organisée par l'AFIN (Asso- 
ciation Française des Informaticiens!. 
Pour cette compétition, 85 bateaux 
étaient présents parmi lesquels l'équi- 
page d'Omnilogie Citizen qui effectuait 
là sa première opération de sponsoring... 
Opération fort réussie puisqu'il a non 
seulement remporté le trophée de l'infor- 
matique 1 987, mais également la Coupe 
du Yacht Club de France pour sa victoire 
dans le parcours olympique, 

SOFTSTRIP COMMUNIQUE 

Softstrip ou "La Révolution infor- 
matique sur papier" nous indique 
leur changement de locaux. Voici 

leur nouvelle adresse : 

SOFTSTRIP FRANCE 

7, rue de la Gare 

92130 Issy-les-Moulineaux 

Tél. : (1) 40.95.16.66. 



Quel est l'avenir de l'informatique 
à l'école ? Des entreprises en 
plein essor ont misé sur ce sec- 
teur de l'informatique que représente 
l'EAO (Enseignement Assisté par Ordina- 
teur! et se sont unies pour réaliser un fas- 
cicule proposant une sélection de logi- 
ciels, de livres, de revues et de matériel 
informatique pour l'EAO. 
IDEES s'adresse tout particulièrement 
aux écoles, associations et parents d'élè- 
ves. Si vous voulez vous le procurer, il 
suffit de le demander à l'adresse suivante 
en |0ignant 2 timbres à 2,20 F pour les 
frais d'envoi : 
Editions SORACOM 
La Haie de Pan 
35170 BRUZ 



L'INFORMATIQUE POUR F 

Micro & Soft Informatique offre 
des Ateliers "Open Access" gra- 
tuitement aux entrepreneurs qui 
veulent avoir une gestion performante en 
attendant d'investir en équipement infor- 
matique. Ils peuvent ainsi utiliser des 
logiciels professionnels de comptabilité, 
de gestion de stock et facturation, des 
bases de données, des tableurs... 
Pour tout contact : 
MSI (tél. 56.94.50.94). 



NOUVELLES ASSOCIATIONS 

Club informatique 

Siège social : Foyer rural de Puyricard — 
Centre de formation X2000 - Ancienne 
école - 13540 Puyricard. 

Club informatique 

Siège social : Cité informatique — 9, rue 
Florent - 69008 Lyon. 



Club informatique 

Siège social : avenue George-Sand - 

36140 Aigurande. 

Club micro-informatique de Rivarennes 

Siège social ; mairie - Rivarennes - 
37190 Azay-le-Rideau. 



Club informatique d'Andernay 
Siège social : mairie - Andemay 
55800 Revigny-sur-Omain. 



AVIS AUX EDITEURS 

La société ESAT Software com- 
munique aux auteurs et éditeurs 
de programmes qu'elle tient à leur 

disposition une série de protections 

physiques ou logiques sur Amstrad, 

CPC... 

Pour plus de renseignements, téléphonez 

au ; 56.96.35.23. 

PROFESSIONS LIBERALES 
ET INFORMATIQUE 

Vous exercez une profession libé- 
rale et vous voudriez adapter un 
programme de gestion sur votre 

GESTION FINANCIERE est un pro- 
gramme associé à la gestion de cabinet 
dentaire qui est adaptable à toutes les 
professions libérales ; de plus, il répond 
aux conditions spécifiées par les associa- 
tions de gestion agréées de contrôle des 
déclarations fiscales. 
Pour plus de renseignements, contactez 
Paul Parage-Jonjon au 94.29-59.06. 



Association informatique 
de Clermont-Dessous 

Siège social : Fourtic — mairie — 
Clermont-Dessous - 47130 Port- 
Sainte-Mane. 



Club informatique varennois 

Siège social .mairie - 031 50 Varennes- 
sur-Allier. 



Club informatique de l'océan Indien 
Siège social : Télèmac - 14, rue d'Al- 
sace - 97400 Saint-Denis. 

Club informatique de Thézy-Glimont 

Siègesocial : mairie - Thézy-Glimont - 
801 10 Moreull. 

Microclub informatique nîmois 

Siègesocial: chez M. Bendinelli lEric) - 
16, rue de Vérone - 30000 Nîmes. 



ACTUALITES 



Comme chaque i 
a liste des 



sera 



i la liste oes nouveaux jeux annon- 
pour la gamme Amstrad. Certains 

int cane pin* ifo nmmpni^lim^ Inr^. 



que vous lirez ces I 
présenterons un ba 
prochain 



d'Air 



de sortir le premier numéro d'une com- 
pilation de son catalogue. Elle comprend 
trois programmes a l'ambiance estivale 
qui sont : Macadam Bumper, Pacific et 
us vous en Mission 2. Les numéros 2 et 3 sont déjà 
li dans un prévus et sortiront respectivement en 
u de CPC. septembre et novembre prochains. 

CPC : cassette, 1 50 F ; disquette, 230 F. 





fl faut croire que l'arrivée de la fin 
du premier semestre favorise 
l'apparition des compilations 
puisque FIL nous en propose une à son 
tour avec Pack Amstrad qui regroupe les 
4 logiciels suivants : Révolution, The 
Great Escape, Cauldron II et Sorcery 
CPC : cassette, 1 49 F ; disquette, 1 95 F. 



COKTEL VISION 

De l'aventure et de l'action en 
nie de Jolly Jumper et de 

son fidèle Lucky Luke (ou l'in- 
verse, peut-être ?), NITROGLYCERINE 
est composé de cinq épisodes d'un style 
très varié où vous pourrez alternative- 
ment avoir votre part d'aventure, votre 
part d'action, sans oublier votre part de 
réflexion... 

Avec ROBINSON CRUSOE, plongez dans 
ce que l'on peut appeler un roman animé. 
Ce style vous permet de vivre l'aventure 
en prenant les décisions nécessaires à 
votre survie, en vous immisçant dans les 
paysages, en relisant des passages de 
testes... Tout ceci vous permet de pren- 
dre connaissance par le jeu de romans 
classiques. 




ACTIVISION 



Avec ENDURORACER, affrontez 



tés du monde 
ainsi des pistes goudi 
éprouvantes du désert 
possible de jouer à 2 
CPC : cassette, 95 F; 



.. A noter qu'il est 
avec ce logiciel, 
disquette, 145 F. 



ENGLISH SOFTWARE 

Avec LEVIATHAN, vous avez 
entre les mains un jeu classique 
dans l'espace où il est aussi 
important d'avoir un vaisseau de manie- 
ment très souple que de réussir à survi- 
vre. Vous devez naviguer dans trois 
zones différentes et affronter dix sortes 
d'ennemis... Alors, bon courage I 





ERE INFORMATIQUE 



L'été arrive bientôt avec les 
vacances à la clé... Ere informa- 
tique y a pensé et a donc décidé 



CRL 



Avec ACADEMY, vous vivez tout 
simplement la suite de Tauceté. 
Dans ce logiciel. Gai Corp décide 
de fonder une école de formation pour 
pilotes d'élite. SI vous voulez devenir un 
as de l'Académie, vous devrez mener à 
bien pas moins de 20 missions en com- 
battant à bord d'un Skimmer militaire 



j9Hm 

INFOGRAMES 

ner tout l'été aux longues balades 

en montagne car. dès septembre, 

vous essaierez de planter votre fanion, 

nuit, sur le sommet de votre choix et ce 
grâce au logiciel BIVOUAC. Ainsi, vous 



TOUT 

SUR SOUND 



Bernard POISOT 



LE GENERATEUR DE BRUIT ET 
QUELQUES VALEURS INTERESSANTES 



LE GENERATEUR DE BRUIT 

Il existe dans SOUND une dernière 
option, la période de bruit, prenant les 
valeurs a 31 . Cela génère un bruit pas 
très agréable qui se superpose au son 
défini précédemment. Ce bruit périr 



défini précédemment — 

' 'e créer des effets spê- 



Le programme qui suit donne un exem- 
ple de ces effets. Il imite une locomotive 
passant devant vous à "toute vapeur" 
avec un effet de relief stéréo afin de 
it de la gauche vers 
, bien sûr, perçu 



essentiellement d_ 
ciaux, en procédant ainsi : le si 
est haché par une fréquence qui se cal- 
cule en divisant 62500 par la période 
BASIC de bruit. Si la période de bruit est 
à 0, le bruit est arrêté. On peut fixer la 
période sonore à pour n'entendre que 

Il n'y a qu'un générateur de bruit qui sera 
le même pour les trois canaux et sa 
période sera définie par le dernier ordre 
pris en compte 



qu a 



illatiu 



■ En V 






î de la gauche et se rappro 
che : lignes 30-50. 
L'oreille droite commence aussi à enten 
dre le bruit à partir d'un certain rappro- 
chement, mais moins fort : lignes 
70-100. 

Quand le train est devant nous, les deux 
oreilles reçoivent la même intensité 
sonore, le volume est maxi : fin de la 
boucle en 100, début de la boucle en 



= stereo (1 oco-mot i ve ) 
20 d=20..: f=4«*5:DEF FNi>i ï u* ( i = f*3 
30 FOR i=0 TO 1* 
43 SOUND 1 t*f f^tit wFNbr'fiit 
5Ô NEXT 

oô IF SOUK. 4 THEN &# 
70 FOR i- 1 1 TO 15 
S0 SOUND lt f »di i> t /FMbP'Jit 
99 SOUND 4> f t d, 3*< i — 13 > > > iFIMoruit 
106 NEXT 

110 FOR 1=15 TO 11 STEP-1 
120- SOUND 4\f *àt itt fFNbfuit 
130 SOUND 1» f > dr3*(i-10) > > »FNbruit 
140 NEXT 

150 FOR 1=10 TO STEP-1 
160 SOUND 4t f »d»i > t *FN bruit 
170 NEXT» 



1 10, Il s'éloigne ensuite â droite. A une 
certaine distance, l'oreille gauche ne per- 
çoit plus rien : boucle 110-140. 
Le son continue à décroître à droite, 
jusqu'au silence : lignes 150-170. 

Les paramètres qui déterminent le bruit 
ont été regroupés à la ligne 20 : d pour 
la durée, f pour la fréquence de base et 
FNbruit pour le bruit superposé. Essayez 
diverses modifications, mais ne jouez 
que sur un paramètre à la fois. Vous 
entendrez l'effet des diverses valeurs. 
Conservez ce programme. Il vous servira 
en sous-programme pour utiliser des 
effets stéréo dans vos œuvres. Suppri- 
mez la ligne 20 et renumérotez-le en 
1 0000 par exemple. Vous déterminerez 
dans votre programme la valeur des 
paramètres en fonction des effets 

QUELQUES VALEURS 
INTERESSANTES 

L'envoi du code 7,PRINT CHR$t7l pro- 
voque un bip qui vide les canaux sono- 
res, arrêtant tout son en cours. Cela peut 
se faire aussi en provoquant une erreur, 
par exemple en utilisant la touche DEL 
en début de ligne, ce qui générera le 
même bip. 

La période BASIC 1 42 génère le LA des 
musiciens, sa fréquence est 440 Hz. 
La période sonore à permet d'obtenir 
le bruit seul. 

Si Ton fixe à la durée de la note, c'est 
l'enveloppe de volume qui déterminera 
la durée du son. Si cette durée a une 
valeur négative, l'enveloppe de volume 
sera répétée le nombre de fois spécifié. 
Bien que le volume ne puisse prendre que 
les valeurs à 1 5, la variation imposée 
par ËNV va de -128 à 1 27, Ceci aura l'ef- 
fet suivant : si le son dépasse 15, il 



revient à 0, de mêm 
à une valeur négativ 
tir de 0. 



il doit descendre 



ENT répétera I 



eloppe négatif pour 
eloppe iusqu'à la fin 



L'explication des possibilités du son en 

BASIC est terminée 

Essayez diverses combinaisons que 

votre CP peut engendrer, d'abord simple 

ment sans ENV ni ENT et complétez petit 

à petit. 

Vous entendrez de tout : bruits et sons, 

BgréablfflS et affreux. Il ne tient plus qu'à 

vous et â votre patience d'éveiller le 

Jean Michel Jarre qui sommeille en vous 



ETAT DE CANAL : certains bits ne 

pourront avoir simultanément la 

valeur 1 . Ce sont, d'une part, les bits 

3, 4 et 5 et, d'autre paît, les bits 6 

et 7 La valeur mini aéra 1 . la valeur 

ma* sera 167 

PERIODE SONORE a 4095 

DUREE : -32768 a 32767 

VOLUME . à 15 

NUMERO D'ENV :0a 15. 

NUMERO D'ENT ■ 15 à 15 (0 

exclu). 

PERIODE DE BRUIT a 31. 

NOMBRE DE PAS D'ENT 'Oà 239. 

AMPLITUDE DU PAS D'ENT ■ 1 28 

a 1 2 7. 

DUREE DU PAS D'ENT : à 255. 

NOMBRE DE PAS D'ENV : â 1 27, 

AMPLITUDE DU PAS D'ENV : 1 28 

à' 127 

DUREE DU PAS D'ENV : â 255 

ENV et ENT peuvent contenir 5 sec 



LOGICIEL PCW 



AGENDOR 

DE QUARTZ SYSTEM 



Noël LAGNEU 

AGENDOR est la dernière nouveauté de QUARTZ SYSTEM, auteur et 
éditeur par ailleurs de programmes utilitaires dont nous avons sou- 
vent parlé dans ces lignes [les applications graphiques CRISTAL, les 
gestions de fichiers SAPHIR, la tenue de comptes RUBIS...). 



auveau programme pour PCW est 
3 veine tout à fait inédite : il est 
ble de fonctionner en arrière-plan, 
tains utilitaires pour PC tels 
que SIDEKICK de BORLAND. Expliquons- 
nous : le programme est charge dans une 
zone mémoire qui est ensuite protégée 
contre l'écriture par une astuce software. 
Le lancement est obtenu par une com- 
binaison des touches du clavier. Pour 
SIDEKICK par exemple, il faut appuyer 
sur les deux touches SHIFT latérales. 
Pour AGENDOR, la combinaison de lan- 
cement choisie est celle obtenue par 
appui sur ALT, SHIFT et > simultané 
ment. En sortant de ce programme, le 
système d'exploitation reprend la main 
On peut alors naturellement relancer l'ap- 
plication par la même manœuvre ou lan- 
cer n'importe quel autre programme. Ce 
qui est tout à fait impressionnant est 
que, dans le contexte obtenu, il est 
encore possible de lancer l'utilitaire en 
arrière-plan, par la même combinaison de 
touches, et également de revenir à l'au- 
tre programme lancé sous CP'M sans 
modifier son bon fonctionnement ulté- 
rieur, ce qui est tout à fait extraordi- 
naire !... Dommage que LOCOSCRIPT 
soit exclu du lot. du fait de ses caracté- 
ristiques non CP/M... 

Le second grand attrait de AGENDOR est 
son sujet : il regroupe cinq utilitaires très 
puissants (à l'instar de SIDEKICK par 
exemple!. Son caractère arriére-plan, 
c'est-à-dire son accès à travers n'importe 
quel autre programme, n'en prend que 
plus d'intérêt encore. On obtient ainsi 



une calculatrice, un bloc-note, un cal 
drier perpétuel, une gestion de fichie 
un agenda (qui a donné son nom au r. 
gramme complet ? 



elquei 






LANCEMENT 

DU PROGRAMME 

Comme nous l'avons indiqué précédem- 
ment, le programme est chargé en 
mémoire (en tapant simplement AGEN 
DOR sous CP/Ml, puis lancé par appui 
simultané sur ALT, SHIFT et > . Au bout 
de quelques secondes, l'écran se brouille 
uniformément et on a le choix entre deux 
possibilités : OUVRIR, c'est-à-dire entrer 
dans AGENDOR, ou FIN {quitter le pro 
gramme). Une fois notre utilitaire ouvert, 
un menu principal propose le choix entre 
les 5 applications (FICHIER, CALCULA 
TRICE, CALENDRIER, BLOC-NOTE, 
AGENDA) l'option voir que nous décri- 
rons ensuite et la fermeture des Fichiers 
pour quitter AGENDOR 

FICHIER 

Cette option étant choisie, la figure 1 
nous montre comment se présente 
l'écran de notre PCW : la fenêtre attri- 
buée à la gestion de fichier apparaît en 
clair, le reste de l'écran restant brouillé 
(hormis la petite zone détaillant les 

Chaque fiche se présente sous forme de 
7 rubriques (société, nom, adresse 1 , 
adresse 2, ville, code postal, téléphone) 



de 20 caractères (soit 500 fiches sur une 
face de disquette du lecteur A:, ou 2000 
fiches sur une disquette double densité). 
Toutes les fonctions classiques d'une 
gestion de fichiers sont assurées de 
manière parfaite. L'utilisation des tou- 
ches spéciales du PCW est très judi 
cieuse et l'ergonomie générale du pro- 
gramme, ainsi que sa facilité d'utilisation, 
sont tout à fait remarquables 

Visualisation 

Les fiches défilent à l'écran par action sur 
les touches i- et - encadrant la barre 
d'espacement. La touche FIND permet 
d'entrer un nom de société qui nous con- 
duira directement à la fiche cherchée ou 
qui nous permettra d'en créer une nou- 
velle. La touche CUT permet d'effacer la 
fiche courante et on peut l'imprimer 
directement par appui sur RELAY. 



Recherche et tri 

Les touches PASTE et COPY permettent 
de choisir certaines fi ches. la première en 
spécifiant pour les rubriques choisies des 
valeurs mini et maxi. la seconde en spé- 

lues. Cette façon de procéder couvre la 
totalité des problèmes courants de tri et 
de recherche. La sortie des résultats peut 
se faire de différentes façons : 

— A l'écran, fiche par fiche. 

— Sur des étiquettes, en paramétrant 

— Sous forme de listes papier. 

— Sur un fichier disque sous format 
ASCII, pour liaison avec tout autre pro- 
qiciel classique. 



CALCULATRICE 

Le choix de cette option fait apparaître 
clairement la calculette dans sa fenêtre. 
Son emploi est ries plus simples : appuis 
sur les chiffres voulus au clavier et chaî- 
nage possible des quatre opérations de 
base + , -, x et /. Cet outil est très utile, 
en dépit de son apparente futilité. 

CALENDRIER 

Il s'agit d'un calendrier perpétuel de 
1 900 à 1 999. Les touches 4 et - incré- 
mentent et décrémentent le mois ou Tan- 
née concernée. La fenêtre réservée indi- 
que alors la correspondance jour de la 
semaine-date journalière. 

BLOC-NOTE 

Il s'agit d'un carnet dont chaque page 
peut contenir 10 lignes de 30 caractè- 
res (583 pages en A:, 2334 pages en B: 
double intensité). On peut feuilleter les 
pages Itouches t- et -I et les imprimer 
(figure 21. Une caractéristique très inté- 
ressante de ce bloc-note est de pouvoir 
chercher un groupe de lettres ou un mot- 
clé â travers toutes les pages du carnet 
tsi rapidement un fait 
j établir des corrélations entre 



AGENDA 



La* 



e tl mu 



e AGENDA e 
e que celle d'uni 



sensi- 
blement (e 

du bloc-note. On sélectionne d'abord le 
jour, le mois et l'année à l'aide des tou- 
ches du curseur et des touches + et -. 
Dans une page donnée, l'utilisateur entre 
ses différents rendez-vous. On peut alors 
imprimer la journée (figure 3], la suppri- 
mer ou changer de jour La recherche par 
mot-clé permet de rt 
donnée à partir du simple 



^nlrer pai 



n d'une per- 
mple !... 



VOIR 

Cette dernière option est illustrée 
figure 4. Toutes les fenêtres sont alors 
clairement visibles et l'écran n'est plus 
du tout hachuré. 
On peut beaucoup vanter ce logiciel, à 

— Son caractère novateur et inédit le 
rend très attrayant. 

— Les utilitaires proposés sont très 
complets et très bien réalisés. 

— L'ergonomie du programme est tout 
à fait remarquable (utilisation des tou- 
ches particulières, simplicité des com- 
mandes, clarté de la notice). 

Nous sommes convaincus qu'il fera un 
tabac sur les PCW et puissent les con- 
cepteurs et les éditeurs s'aligner sur les 
qualités de ce produit I 





I Régler cou- 



Kii!ïlAt:i-.HVlL 



mm '-. 7Ï-7S ut jw 

Bit,,, 




=l|=|Wiiïi «i; 




stsirfH - 71 








Basai jtJi «in ikI« ■fcy^ 


jmH» i: u j3 w ii ii 














la a n. m ti i% * 


™™ ii.ii,i, ,„, ni,. 




jmmii Ji 






' ' aSr si « i »7 


S St rtchtrert i Irai ., i ■.!!;■.- 
i! ' ■■■''■ ' ■■< -" ■ 


p. SIC j 

* =Sulvu}L 1 

ÎLï!' 1 


SfeisfiinM"™'"' 
8ft.s:«aii!«,„ 



AGENDOR nous montre 
tous ses visages !... 



DECOUVERTE 



LES FRACTALES 
EN LOGO 



De plus en plus de |eux (d'arcades ou 
d'aventures) utilisent un générateur frac- 
tal pour créer un décor sans cesse diffé- 
rent : le joueur a l'impression d'évoluer 
dans un paysage infini. Dans le cas de 
ces jeux, il s'agit de fractales en trois 
dimensions Irelief). Nous vous proposons 
de découvrir les fractales à deux dimen- 
sions qui sont bien sûr beaucoup plus 
faciles à programmer 
Nous avons utilisé Logo car il est idéal 
pour réaliser ce genre d'application. Si 
vous ne connaissez pas encore ce lan- 
gage, voilà peut-être l'occasion de vous 
y mettre. 

COMMENT CREER 

UNE COURBE FRACTALE ? 

Pour construire une fractale, il faut tout 
d'abord choisir un "générateur" ou 
"motif de base" (quelque chose de très 
simple comme, par exemple, le dessin de 
la figure 11. 



Ensuite, il faut t 


ouver un moyen pour 




urs fois cette forme 


(réduite en dimen 


ion) tout en respectant 


la géométrie du 


notif de départ. 



! Ce r 



■ ? Alo 



reprenons notre exemple : nous allons 
remplacer chacun des segments de 
droite par une copie (à l'échelle 1 /3) du 
motif de base. Ce qui va donner le des- 
sin de la figure 2. 



Et i 



de i 



jite 



encore chaque nouveau segment par le 
motif de base réduit neuf fois jusqu'à 
obtenir le dessin de la figure 3. 

Théoriquement, il faudrait poursuivre ce 
travail jusqu'à l'infini. On obtiendrait alors 
quelque chose comme le dessin n° 4. 

Mais, comme le temps c'est de l'argent, 
nous allons nous arrêter bien avant l'in- 
fini. De toutes façons, il faut rester dans 
les limites imposées par la définition de 
l'écran. 



PROGRAMMATION EN LOGO 



Le, 



; très s 



■nple 



allons d'abord (pour fixer les idées) créer 
une procédure qui dessine uniquement 
le motif de base. Nous allons même lui 
donner un paramètre, ce qui permettra 
de dessiner des motifs de base de n'im- 
porte quelle dimension (voir listing 1 et 
figure 6). 




Figure 1 



J~L 



Figure 2 





Figure 3 



J*%. 



r " 



Figure 4 



as s, 

» « » 



Listing 1 



to motif :taille 
fd :taille 
It 90 
fd :taille 
rt 90 
fd :taille 
rt 90 
fd :taille 
It 90 



Si vous voulez tester cette procédure, 
vous pouvez taper par exemple 
motif 20 

Pour transformer ce dessin en courbe 
fraciale, il suffit d'une légère modifica- 
tion de la procédure : remplacer tous les 
traits (fd : taille! par un motif plus petit. 
Vous savez, bien sûr, modifier une pro- 
cédure ; il faut taper : ed [motif 1. Vous 
obtiendrez le listing 2. 



Listing 2 



lo motif :taille 




if ital 


e < 3 |fd 


taille stop) 


motif 


taille / 3 




It 90 
motif 


taille i 3 




rt 90 
motif 


taille / 3 




rt 90 






motif 


taille / 3 




It 90 






motif 


taille / 3 




and 







Comme vous l'avez sans doute remar- 
qué, nous avons ajouté une ligne d'ar- 
rêt lif :taiile < 3...). Ceci, bien sûr, pour 
éviter à LOGO d'explorer les profondeurs 
de l'infini. Vous pouvez modifier à 
volonté cette ligne d'arrêt pour changer 
la définition de la courbe : 

if taille < 10 [fd :taille stop] 
(peu de définition) 
if taille < 1 [fd :taille stopl 
(définition maximale) 



Vous i 







,* itaille ^ 








~ " 




a 




4 






^ :taille fc 










Listing 3 



setpos |120 01 
seth 90 
pd 
motif 81 



Et, enfin, nous modifions départ pour 
appeler non plus motif mais étape 
(listing 61. 

Listing 6 



PETITE VARIANTE 

Le programme précédent dessine la 
courbe fractale tout de suite avec la défi- 
nition que vous avez demandée. Il peut 
être intéressant de faire dessiner toutes 
les étapes, en partant de la définition la 
moins bonne jusqu'à la définition la meil 
leure. Nous ajoutons un paramètre à 
notre procédure motif (listing 4). Para- 
mètre qui sera utilisé dans le calcul de la 
condition d'arrêt ; 



Listing 4 



.,»« „oir ce que cela don 
„,„,$ tapez motif 30 

La courbe n'est pas centrée sur l'écran. éta| 
Ce n'est pas bien grave : il suffit, pour ave 
arranger cela, de créer une procédure peti 

la position de départ de la courbe 

(listing 3). 

Maintenant, tapez simplement départ 
pour avoir une courbe fractale correcte- 
ment positionnée sur l'écran. 
Reconnaissez que, pour obtenir un des- 
sin aussi complexe en deux procédures 
et moins de vingt lignes de programme, 
il faut vraiment s'appeler LOGO. 



to motif :ta 


Ile :arret 


if :tai 


e < 


arrêt [fd Maille stopl 


motif 


failli* 


/ 3 


It 90 






motif 


laille 


/ 3 


rt 90 






motif 


: taille 


/ 3 


rt 90 






motif 


■Taille 


/ 3 


It 90 






motif 


;taille / 3 


end 







Ensuite, nous créons une procédure 

étape (listing 51 étape qui appellera motif 

des valeurs d':arrët de plus en plus 



Listing S 



to départ 


es pu 


setpos 1-120 0| 


seth 90 


pd 


étape 81 


end 



Pendant que nous y sommes, voici 
encore une petite amélioration : plutôt 
que de faire superposer les courbes, 
nous allons effacer le tracé de l'étape 
précédente avant de redessiner. Mais 
pour que le résultat soit impressionnant, 
il faut effacer la courbe au fur et à 
mesure de l'avancement du nouveau 
tracé. La procédure motif prend alors sa 
forme finale telle que le montre le 
listing 7. 

Listing 7 



to motif :tai!1e : 


irret 


if :ta.He < :arre: l*d :taille stopl 


pe fd taiilo bk 


tarie pd 


motif taille ■ 3 




It 90 




pe fd :taifle bd 


raille pd 


motif taille 3 




rt 90 




pe fd :taille b* 


•aille pd 


motif rtaiite ' 3 




rt 90 




pe fd :taiHe bk 


tdille pd 


motif ta.lle ■ 3 




It 90 




pe fd rtallle ok 


taille pd 


Motif rtaille ■' 3 




end 






D'AUTRES COURBES... 



iant que vous savez comment 
et programmer une courbe trac- 
iez pas vous en priver. Les 
) vous montrent quelques 



Listing 8 



>v< 



Listing 9 

"Si 



£•- 



>7 






branche 64 



* 



frï 



to branche :long 
if :long < 3 Istopl 
fd ;long 

rt 45 

branche :long / 2 

K 90 

branche :long / 2 

rt 45 
bk :long 



I est intéressant de faire varier l'angle 
antre les branches et de désymétriser 
'arbre lune branche avec :long / 2 et 
'autre :long / 3 par exemple). 



Tapez exodus 60 et vous allez voir 
que vous aile? voir... 
M y a des ouvrages entiers OOFisacrÊS à 
courbes fractales. Autrement dit, il y ■ 
a beaucoup d'autres sortes. Mais il e 
amusant de créer les sienne 






repeat 4 |fd :taille exodus :taille 
/ 3 rt 901 



LEXIQUE DES PRIMITIVES UTILISEES 



Signale la fin d'une procédure. 

fd x (forward) 

Trace un segment de longueur x à partir du point courant, dans la dire 



ht (hide turtle) 

Ne fait plus afficher la pointe de flèche, ce qui augmente I; 



-ante de x degrés, 



It x (left) 

Change la directn 



pu (pen up) 

Lève le crayon, 
tracé. 

rt x (right) 
Change la direct 



st (show turtle) 

Affiche la pointe de flèche. 



Annonce la définition d'une procédure 



. sur la droite. 



RAPPEL DE GEOMETRIE LOGO 

En LOGO, tous les tracés se font à partir du point c 
courante. Ces deux paramètres sont représentés sut 
flèche. 



^ 



v 



Direction 
Cour ante 



Point courant 



Il est possible de changer la direction courante Irt. It, sethl et le point courant (fd, 

bk setposl en produisant un tracé (pdl ou sans laisser de trace (pul. 

Certains "simples d'esprit" ont assimilé cette représentation mathématique aux 

évolutions d'une tortue. Animal qui se serait réincarné dans la pointe de flèche 

précédemment citée. 

Sovons indulgent envers ces personnes et laissons les martyri; 

être un sympathique quadrupède carapaçonné. 



u 'elles croient 



BIBLIOGRAPHIE 



LOGOMONDE 
(Hatier) 

Livre + cassette Thomson, Apple. Une 
trentaine d'activités LOGO abondam- 
ment commentées (A. Pré, G Godimier, 
M Bonnetonl. 

LOGOMONDE 2 

(Hatier) 

Livre + cassette Thomson. Intelligence 

artificielle et LOGO (A. Pré, G. Godimierl. 

LOGOMONDE AMSTRAD 
(en cours d'édition) 

Livre + disquette Amstrad Des exem- 
ples de ce qu'il est possible de faire avec 
DR LOGO sur AMSTRAD (A. Pré, 
G. Godimierl. 

GERESCO 

{Hatier) 

Logiciel de gestion PC ou compatible. 
Gestion des élèves, analyse de résultats, 
éditions de bulletins (A. Pré). 

LE MONSTRE DE L'INFO A L'ECOLE 

Revue Diffusion : Ademir. L'informatique 
dans l'enseignement (G. Godimier). 



REPORTAGE 



LES 3 JOURS AMSTRAD, 
PC, MINITEL DE LYON 



Les 15, 16 et 17 mai, s'est déroulé à 
Lyon une exposition concernant les 
matériels AMSTRAD, le minitel et les 
compatibles IBM. Heureux abonnés et 
lecteurs de CPC, AMSTAR ou PCompa- 
tibles, une réduction vous était offerte 
sur le prix d'entrée. Ceci a dû sans doute 
vous inciter à faire le déplacement puis- 
que le nombre d'entrées a augmenté de 
500 par rapport à la 1 B, ° édition du salon. 
C'est donc 2500 personnes qui ont 
arpenté les allées où éditeurs et reven- 
deurs présentaient leurs produits. 
Succès certain pour Sémaphore avec le 
scanner de Dart et Graphpad II, une 
tablette graphique pour PCW munie d'un 
logiciel permettant toutes sortes de 
manipulation d'objets définis en 
mémoire. Toujours sur PCW, la série des 
"8000" s'est enrichie d'un MASTER- 
FILE. Il s'agit d'une gestion de fichiers 
sophistiquée qui utilise au 



Olivier SAOLETTI 

capacités du disque virtuel. 
Amstrad ayant sorti un compatible (vous 
ne le saviez pas ?}, Tasword et Tasprint, 
deux logiciels connus, se sont adaptés 
aux nouvelles machines, le tout pour un 
rapport qualité/prix des plus satisfai- 
sants. 

Autre pôle d'attraction, le stand Wings 
avec le logiciel AMX Pagemaker tournant 
sur 464 plus une extension mémoire de 
64 Ko. La P.A.O. (Publication assistée 
par ordinateur) étant actuellement en 
vogue, les CPC ne pouvaient rester en 
arrière... Muni de la souris AMX, (elle 
n'est pas obligatoire, mais elle offre, 
outre la facilité d'utilisation, un "look' 
sensationnel!, Pagemaker permet, à 
coup de menus déroulants et d'icônes, 
de fabriquer un petit journal. Il est même 
possible d'intégrer des images digitali- 
sées et de les disposer à l'intérieur de vos 
textes. 




Le digitaliseur ARA de Jagot et Léon fai- 
sait une démonstration de ses possibili- 
tés en se connectant sur un téléviseur. 
Même débauche d'images avec ie logi- 
ciel Pastel qui permet la composition de 
pages VIDEOTEX avec quelques options 
supplémentaires telles que la transforma- 
tion des images digitalisées par ARA et 
la possibilité de fabriquer fenêtres et 
masques. Le dernier maillon de la chaîne 
est un serveur 4 voies possédant une 
extension mémoire de 256 Ko (celle-ci 
permet un stockage et un traitement des 
images très rapide). 
Du côté purement logiciel, on pouvait 
trouver Orthogus, un programme éduca- 
tif sous forme d'enquête policière (CFI), 
ainsi qu'un utilitaire mathématique trai- 
tant des fondions numériques. Logys, 
outre Maths-collège et Maths-école déjà 
testés dans CPC, présentait plusieurs 
programmes à orientation profession- 
nelle : Financius, gestion d'association, 
analyse financière. 

Sur PC, Micro Star's proposait GT + , un 
logiciel de gestion intégrée comprenant 
gestion de stock, comptabilité, gestion 
commerciale, courrier électronique, avec 
des possibilités d'extension comme une 
connexion caisse enregistreuse ou une 
comptabilité analytique. Autre pro- 
gramme présenté par Micro Star's, Dis- 
trib, un gestionnaire pour magasin de 
prêt-à-porter. Le club CI. A. (Club Infor- 
matique Amstrad) tenait un stand 
bruyant puisqu'envahi d'exclamations, 
de sonorités stéréophoniques et 
amstradiennes. 

Autre club présent par l'intermédiaire de 
quelques membres : Ams'cercle dont un 
des animateurs, Michel Archambault est 
venu nous rendre visite sur le stand CPC. 
Cette exposition a été pour nous l'occa- 
sion de répondre à vos questions et pour 
vous la possibilité de vous procurer les 
anciens numéros (pas tous malheureu- 
sement I) 

C'était également le moment de se pro- 
curer des produits à tarif réduit tels que 
disquettes 3 et 5 pouces (Majuscule et 
France-disquette) ou quelques unités 
centrales (on pouvait même trouver des 
ATARI 520 ST sur lesquels tournaient de 
fabuleuses "démos"). Si vos moyens 
financiers étaient plus importants, MEI 
pouvait combler vos désirs avec toute 
une gamme de fournitures pour l'infor- 
matique d'entreprise. 
Comme vous le constatez, il y en avait 
pour tous les goûts, le tout dans une 
ambiance de grand club informatique. 




-•■•sggffS 




pO 5 " s. ori* 



£..*•"• 



BANC D'ESSAI 



Les interfaces 







LE SYNTHETISEUR VOCAL 

Faire parler l'ordinateur est toujours amu- 
sant : les compte-â-rebours sont plus 
réalistes, lors du tir d'un missile ; les desi- 
derata d'un robot, exprimés en clair, peu- 
vent apporter une touche d'humour à 
votre dernier programme. Seule l'imagi- 
nation limitera les possibles utilisations 
d'un synthétiseur vocal... 
Construit autour du célèbre SPO 256, 
l'un des circuits intégrés "vocaux" les 
plus anciens, le synthé DK'Tronics a pour 
seul inconvénient son accent britannique 
très prononcé. Avec lui, il sera difficile 
de parler en bon français... Essayez de 
lui faire prononcer la lettre "U" par 
exemple 1 Ceci étant dit, tout le reste est 
fort bien pensé. 

L'utilisateur apprendra avec plaisir que ce 
synthétiseur est doté d'un amplificateur 



stéréo. Cet ampli viendra se substituer 
avantageusement à celui qui équipe 
l'AMSTRAD. Désormais, toutes les illus- 
trations sonores (vocales ou musicales) 
seront reproduites sur les 2 haut-parleurs 
livrés avec l'interface. Deux réglages 
sont accessibles sur l'amplificateur : le 
volume sonore et la balance droite- 
gauche (ou gauche-droite si vous êtes un 
lecteur susceptible et engagé politique- 
ment). Le second réglage s'effectuera à 
l'aide d'un petit tournevis : il a déjà été 
pré-ajusté en usine. 
Le synthétiseur DK'Tronics est commer- 
cialisé en plusieurs versions, fonction de 
la machine qui doit l'accueillir et selon 
que le logiciel est livré sur support 
magnétique ou en ROM. 
C'est cette dernière version (logiciel en 
ROM) que nous avons testée. Sentant 
grandir votre impatience, je ne vous ferai 
pas attendre davantage. 



Le CPC reconnaît la présence de la ROM 
du synthé (je ne vais pas écrire le mot 
en entier à chaque fois...) en affichant 
"SPEECH ROM VER. 1.1". L'instruction 
ISPEAK permet d'initialiser la ROM et 
lance un test interne donnant tout à coup 
la parole à l'AMSTRAD. La liste des com- 
mandes disponibles est affichée : il ne 
reste plus qu'è les essayer I 
Disposant d'un espace limité pour ce 
banc-d'essai (on ne va tout de même pas 
détailler la notice II, nous allons voir qu'il 
existe, en fait, deux grands modes de 
fonctionnement, les autres en dérivant 
plus ou moins. 

A chaque phonème est associé un code 
(il y a ainsi 59 sons et 5 durées de pause) 
décimal qui, envoyé è l'adresse du 
synthé, produit un son. Ceci étant dit, on 
peut donc programmer "son par son", 
par l'intermédiaire de listes de DATA. Les 
octets lus sont envoyés dans un buffer 



DKTRONICS 



Amstrad construit des ordinateurs ; 
DKTronics les complète avantageu- 
sement par des interfaces comblant 
certaines lacunes de la machine. Présen- 
tées en boîtier plastique de belle facture 
(mais non, pas le prix, la réalisation 1), les 
extensions peuvent être accouplées, non 

Sas pour faire des petits, mais pour ouvrir 
l'utilisateur des horizons nouveaux. 
Curieusement, DKTronics édite un manuel 
d'utilisation commun à toutes les interfa- 
ces. L'acheteur d'un synthétiseur vocal se 
laissera-t-il tenter, au vu des possibilités 
décrites dans le manuel, par un crayon 
optique ou un RAM-Disque ? 
Les périphériques DKTronics que nous 
avons testés pour vous sont tous disponi- 
bles chez ORDIVIDUEL. En vous recom- 
mandant de "CPC", le meilleur accueil 
vous sera réservé. 




qui pourra en contenir jusqu'à 250. Ces 
sons peuvent être envoyés en mode 
"direct" ou en mode "programme", 
grâce à un astucieux contrôle des inter- 
ruptions, le synthé ne ralentira pas trop 
votre programme. Grâce aux sons élé- 
mentaires, on pourra former des mots, 
mais aussi produire des effets sonores 
assez recherchés. 

L'autre mode de fonctionnement fait 
appel à un convertisseur Texte/Parole. 
L'idée est excellente car on peut ainsi 
introduire du texte en anglais, sous forme 
de chaînes de caractères, et le faire pro- 
noncer au St T (j'en ai marre d'écrire 
synthé...) au moyen d'un simple PRINT. 
Le logiciel est conçu pour reconnaître 
certaines règles d'exception de la langue 
anglaise, ce qui simplifie bien notre 
tâche. 

J'ai bien dit "langue anglaise" car, pour 
le français, il faudra ruser. Certains mots 



anglais devront être orthographiés diffé- 
remment (par exemple, "final" est pro- 
noncé presque "à la française" et devra 
être écrit "fianol" pour ressembler à de 
l'anglais). Suffit de savoir, quoi I La lec- 
ture de la notice nous apprend que le buf- 
fer de texte peut contenir jusqu'à 100 
caractères, ce qui permet de former des 
phrases suffisamment longues. Avec sa 
contenance de 250 phonèmes, le buffer 
de parole fera parler la machine pendant 
45 secondes... mais une commande 
appropriée permet de loi couper le 
sifflet I 

Profitant d'une autre caractéristique de 
ce St T (j'en profite I), l'AMSTRAD 
pourra dicter les listings ! En effet, tout 
ce qui apparaît à l'écran sera énoncé par 
la machine. Hélas, ceci restera parfois 
assez confus, la voix robotisée s'accom- 
modant mal de certaines i 
sons. 



Le synthétiseur {quel courage I) DK'Tro- 
nics est également programmable à partir 
de l'assembleur. La notice donne quel- 
ques explications à ce sujet. Cette notice 
se termine par une table des phonèmes, 
listés par numéro d'ordre avec, pour cha- 
cun d'eux, un exemple de mots extraits 
du vocabulaire anglais. 
Malgré quelques petits défauts (notam- 
ment une voix un peu trop métallique lors 
de l'utilisation du convertisseur texte/ 
parole), le saint thé (normal, il est bri- 
tish...) DKTronics est séduisant par ses 
possibilités. Le constructeur offre à l'uti- 
lisateur, en plus du synthétiseur (c'est la 
dernière fois que je l'écris), un ampli sté- 
réo et ses 2 HP... pour le même prix I 



BANC D'ESSAI 




LE RAM-DISQUE 

Un disque de 254 Koctets utilisables, 
voilà ce qui se cache sous le nom de 
"Silicon Disc"... RAM-Disque en "fran- 
çais" (je vois les habits verts de nos aca- 
démiciens en frémir I). 
A quoi peut bien servir un RAM-Disque 
A charger et sauvegarder des program 
mes, fichiers, blocs de données, beau 
coup plus rapidement. Et ça marche sur 
n'importe quel CPC ? Oui mon bon Mon- 
sieur... à condition que ledit CPC soil 
déjà équipé d'au moins un lecteur de dis- 
quettes. Le RAM-Disque se comporte 
alors comme une disquette normale aux 
différences suivantes près ; 

— Les fichiers sont lus et écrits beau- 
coup plus rapidement. 

— Ils sont définitivement perdus en cas 
de coupure de courant. 

— On les retrouvera même après un 
RESET complet. 

Quel intérêt peut-on avoir à utiliser un 
RAM-Disque ? Le gain de vitesse lors de 
la manipulation de gros fichiers... 
Le RAM-Disque DK'Tranics est utilisable 
sous AMSDOS (en BASIC) ou sous CP/M 
(2 .2 ou CP/M + ). L'interface pour 464 et 
664 se présente en 2 boîtiers : l'un con- 
tient le système d'exploitation, l'autre là 
RAM. L'un dans l'autre... ils se connec- 
tent (aïe, pourvu que M. Pasqua ne fasse 
pas interdire CPC I) et sont unis pour le 
meilleur (et pour ie pire, si vous les utili- 
sez mal} et pour le grand bien de l'ordi- 
nateur hôte. 

Selon que votre CPC est déjà doté d'une 
ou 2 unités de disquettes, le RAM- 
Disque deviendra le disque B ou C. 
Après une initialisation relativement sim- 
ple, destinée à indiquer au système la 
présence d'un disque supplémentaire, 
l'utilisateur transférera ses fichiers de la 
disquette vers le RAM-Disque. Sous 




L'EXTENSION 
RAM 2S6 K 

Encore une extension de mémoire, mais 
qu'il ne faut pas confondre avec le Ram- 
disk. Celle-ci a pour vocation de gonfler 
votre CPC 464, 664 ou 61 28 en lui attri- 
buant 256 Ko supplémentaires. 
Cette mémoire est divisée en 16 ban- 
ques de 1 6 Ko qui seront accessibles par 
commutation au moyen d'un jeu de com- 
mandes RSX. Mais n'allez pas imaginer, 
comme le font bien souvent les débu- 
tants, que vous allez pouvoir écrire des 
programmes en BASIC de près de 
200 K. Ce n'est pas si simple 1 Par con- 
tre, elle vous rendra les plus grands ser- 
vices pour sauvegarder tout ce qui est 
gourmand en mémoire, comme par 
exemple vos pages d'écran, vos tableaux 
ou vos chaînes de caractères, allégeant 
d'autant vos programmes en BASIC. 
L'interface est livrée avec une disquette 
contenant le logiciel d'implantation des 
RSX. Notez que vous avez le choix de 
l'adresse d'implantation et que, par 
défaut, le programme s'installera à 
l'adresse la plus élevée disponible. Dès 
que cette opération est effectuée, l'écran 
vous indique le nombre de banques dis- 
ponibles. Voyons maintenant le rôle des 
différentes fonctions complémentaires, 
mais soulignons au préalable que la 
notice d'empioi fort détaillée vous facili- 
tera la première prise en main. 
ISAVES,n et ILOADS,n permettent de 
stocker en mémoire et de rappeler des 
pages écrans, n étant le numéro de bloc. 
Les anglophiles auront interprété le S de 
la commande à Screen. 
Syntaxe analogue pour ISAVEW,F,n et 
ILOADW,F,n (W comme window) qui 
ont respectivement pour fonction de sau- 



CP/M, la procédure de configuration du 
Setup est décrite dans le manuel de 
DK'Tronics, ce qui ne laissera pas errer 
inutilement l'utilisateur. Toujours sous 
CP/M, il faudra utiliser PIP pour transfé- 
rer les fichiers car COPYDISC et DIS- 
COPY, plus gourmands en TPA, ne tour- 
nent pas. 
Les temps (sont durs...! comparés de 



vegaruer «i uw rappeler c 
caractérisées par leur numéro, n étant 
toujours le numéro de bloc. Ces deux 
commandes vous permettront de réali- 
ser facilement des menus superposés à 
la Mac-lntosh. 

IHigh et ILow chargent deux images en 
mémoire centrale, l'une à la place habi- 
tuelle (high) et l'autre immédiatement au- 
dessous llow), ce qui, grâce à la com- 
mande associée ISwap, vous permettra, 
par commutation de pages, de réaliser 
des animations graphiques. 
Quittons maintenant le domaine de 
l'écran pour voir le stockage de données 
qui s'effectue de manière analogue par 
ISAVED (comme Data) et ILOADD. Les 
données peuvent être des tableaux, des 
variables ou des chaînes de caractères. 
Heureusement que la notice est très 
claire à ce sujet et l'expérimentation, à 
l'aide des petits programmes de démons- 
tration inclus, vous permettra très faci- 
lement de tirer le meilleur parti de ces 
deux commandes. 

Il nous reste à citer les quatre dernières 
commandes qui sont IASKRAM, IPEEK, 
IPOKE et IBANK qui s'adressent au pro- 
grammeur plus expérimenté qui pourra 
également, s'il a bien assimilé la topogra- 
phie de la mémoire de l'AMSTRAD, 
écrire ses propres routines en BASIC ou 
en assembleur pour s'affranchir des RSX 
d'origine. 

Signalons enfin que cette extension per- 
met d'utiliser CP/M+ tel qu'il est livré 
avec le 61 28 et que la commande IEMU- 
LATE transformera votre 464 ou 664 en 
véritable 6128| 



chargement d'un fichier sont éloquents : 
pour 30 K de BASIC, il faut 7 secondes 
sur disquette et moins de 1,5 s avec le 
RAM-Disque... Spectaculaire également, 
le chargement d'un écran de 1 7 K à partir 
du RAM-Disque... 

Si vous êtes consommateur de gros 
fichiers, pensez à ce RAM-Disque. Au 
fait, il existe aussi en version 64 K B 




LE CRAYON OPTIQUE 

Le crayon optique OKTronics se con- 
necte par l'intermédiaire d'un mini jack 
à son boîtier d'interface qui présente, 
vous vous en doutez, un air de famille 
avec les autres périphériques de la 
marque. 

Ce boîtier contient, outre l'électronique 
du stylo, une ROM dans laquelle est 
implanté un logiciel de dessin exploitant 
les possibilités de l'outil. La mise en 



œuvre de l'ensemble est extrêmement 
simple. Il suffit de taper ILIGHTPEN pour 
voir apparaître le premier menu du logi- 
ciel intégré dans la ROM qui aura détecté 
la présence éventuelle d'un lecteur de 
disquette et vous proposera de charger 
ou de sauvegarder vos dessins sur le 
support magnétique adéquat. "Next" 
permet de passer au menu suivant et il 
y en a cinq en cascade ainsi de suite. Le 
second vous propose d'effacer l'écran et 
de calibrer le crayon optique qui a besoin, 
pour fonctionner correctement, d'un 
niveau de lumière ni trop faible ni trop 
élevé. Vous réglerez donc la brillance de 
votre écran au niveau suffisant pour pou- 
voir déplacer la petite cible aux quatre 
coins de l'écran. De temps à autres, 
cette petite cible a des tremblements 
erratiques, mais la notice précise que 
c'est sans importance car le dessin 
pourra être corrigé à la loupe par la suite. 
Les quatre flèches de direction vous per- 
mettront de centrer exactement la cible 
sur le stylo. 

Une fois cette opération effectuée, vous 
voilà prêt pour le dessin. Vous disposez 
pour cela d'une palette de 10 couleurs 
qui vous serviront pour les crayons (dis- 
ponibles en 4 épaisseurs}, pour l 'aérogra- 
phe, les textes qui peuvent être horizon- 
taux ou verticaux et, enfin, pour la fonc- 
tion de remplissage de formes, matéria- 
lisée par un robinet. Comme tous les pro- 
duits concurrents, le stylo DK'Tronics a 
besoin de lumière pour fonctionner, d'où 
une certaine difficulté pour choisir une 



couleur sombre. Mais l'auteur du pro- 
gramme y a remédié en autorisant la 
sélection de couleur par la bordure jaune 
qui entoure chaque teinte de la palette. 
En dehors des cercles et des rectangles 
accessibles par le menu, il est possible 
de tracer des figures complexes au 
moyen "d'élastiques" tendus entre des 
punaises. Votre courbe complexe sera 
ainsi constituée d'une succession de 
lignes courtes et cette fonction se révèle 
très pratique à l'usage. Notons aussi la 
présence d'une fonction de copie, 
d'agrandissement ou de réduction d'une 
partie du dessin. La fonction loupe est 
ici appelée "calepin". Au moyen d'une 
fenêtre réglable, vous sélectionnez une 
partie de l'image avant de la transférer 
vers le calepin où elle apparaîtra en plein 
écran et là vous pourrez la modifier au 
pixel près. 

Reste un dernier point : l'impression de 
vos chef -d 'œuvres. Vous disposez pour 
cela d'un petit programme livré sur une 
cassette et qui vous offre le choix de 
l'imprimante entre Epson et Amstrad. 
Après notre test, nous regretterons sim- 
plement que DK'Tronics n'ait pas installé 
à l'extrémité de son stylo un petit bou- 
ton poussoir manœuvrable du bout de 
l'index, ce qui éviterait de manipuler la 
touche Enter de la main gauche. Mis à 
part ce petit regret, ce stylo optique s'est 
révélé d'un usage fort agréable et la 
gamme des outils mis à la disposition de 
l'artiste permet facilement c 
avec une grande précision! 



BIDOUILLE 



UN PORT D'ENTREES- 
SORTIES ECONOMIQUE 



Eddy DUTERTRE 



Les trois versions de CPC disposent 
d'origine d'un port d'entrées-sorties faci- 
lement utilisable pour les bricoleurs. La 
sortie imprimante centronic est consti- 
tuée de huit lignes en sortie (DO à D6 et 
STROBE)etd'uneenentrêe(BUSY).Ce 
port est actif par le BASIC avec les ins- 
tructions PRINTS8 ou LIST/f8. mais le 
résultat obtenu est tributaire du logiciel 
interne de l'ordinateur. Par contre, grâce 
à deux instructions particulières du 
BASIC (OUT et INP), il est possible de se 
rendre maître de la configuration de ces 
lignes. 

L'important est de savoir que, pour les 
sorties, l'adresse du port est &EFOO et 
pour l'entrée &F532. Ainsi, pour mettre 
toutes les lignes DO à D6 et STROBE à 
un, il faudra faire : 

OUT &EF00.&7F ou OUT &EF00.127 

La ligne sept (STROBE) est inversée par 
rapport aux autres car elle passe à un en 
mettant le bit huit à zéro d'où &7F à la 
place de &FF {01 111111= &7F 
11111111 = &FF) 
ligne... 76543210 76543210 
Pour une ligne sur deux à un : 

OUT &EF00,Bl2A ou OUT &EF0O,42 

&2A 00101010 (notez le bit 7 à 

zéro) 
ligne....76543210 

Inversement, pour lire la ligne en entrée 
(BUSY), il faudra faire : 

A = INP &F532:A = A AND 64 

Si l'entrée est à un, A aura pour valeur 
64 sinon A sera nul. 

Comment exploiter ces sorties ? 



Une première mise en garde. Il n'est pas 
possible de commander directement, 
avec ces sorties, des relais ou autres 
systèmes tels que voyants. Un petit 
montage buffet est nécessaire (voir 
schéma). Pour l'entrée, il ne faudra pas 
dépasser 5 volts. L'idéal est de disposer 
d'un contact à la masse (interrupteur ou 
contact de relais). 




Schém a d'un buf fer . 

2N2222 j 

venant de la prise IMF. 
PB a US ci; STKOBE 

Entrée sur BtlSV. conseillée 



Les liasses sont a relier 
a la broche 14 ou 15 de la 
prise IHP. 



17 16 15 14 13 12 11 10 9 8 7 



5 4 3 S 1 



i 29 28 27 26 25 24 23 22 21 26 19 



3-D1 

4-D2 

S-l>3 

6-M 

7-05 

8-D6 

9-D7 
11-8USY 
14-MftGSE 
15-NftSSE 



BROCHAGE DU CONMCTEUJt IHPRIHftHTE 



BIDOUILLE 



OCTODE 



Zig et Puce 



OCTODE est le nom donné au montage 
proposé, il s'agit d'un mini clavier à con- 
necter sur la prise joystick. Son origina- 
lité réside dans le fait qu'il assure au cur- 
seur de francs déplacements obliques. 
Tout indiqué pour les utilitaires à option 
joystick et technique menus-déroulants, 
il demeure sociable en usage ludique. 
Pour réaliser ce montage, les néophytes 
liront attentivement le texte. 

PRINCIPE DE FONCTIONNEMENT 

Sur un joystick ordinaire, un mouvement 
oblique s'obtient on pressant deux bou- 
tons de déplacement. Par exemple, pour 
atteindre le coin supérieur gauche de 
l'écran, la base de la manette de jeu doit 
presser en MEME TEMPS les contacts 
HAUT et GAUCHE. Mais cela ne peut 
pas fonctionner parfaitement dans tous 
les cas de figure et alors le curseur dévie 
e haut, s 



Le dispositif de la figure 1 assure un 
déplacement oblique UNIQUEMENT lors 
d'une action SIMULTANEE sur les con- 
tacts sollicités. Il s'agit d'une fonction 
ET, matérialisée dans notre cas par deux 
diodes et un poussoir (figure 4). 
OCTODE apporte quatre directions (ou 
sens plus exactement) obliques. 

Il faudra donc huit diodes et quatre pous- 
soirs à cet effet. Les deux feux sont pla- 
cés dans la partie supérieure du montage 
et l'un d'eux (F2), est couplé avec la tou- 
che centrale (figure 7). 



REALISATION 

Outillage à rassembler ; 
i plates, 
; coupantes, 
nces à dénuder, 
ir à souder, soudure, 




Composants à se procurer : 

- 1 1 boutons-poussoirs, 

- 8 diodes types 1N4148 (D1-D8), 

- connecteur |ovstick femelle, 

- câble 1 mètre. 9 conducteurs, 

- circuit imprimé ICI). 

Pour le Cl, les néophytes se procureront 
une pochette KIT DE GRAVURE (mode 
d'emploi inclus). 

PREPARATION 

Avant d'implanter les composants, il faut 
les identifier, repérer leurs connexions, 
les mettre en forme. 

- Le Cl : tous les trous sont percés au 
diamètre de un millimètre (figure 10). 

- Le CABLE : comporte neuf fils con 
ducteurs isolés à relier d'un côté au con- 
necteur, de l'autre au Cl (figure 71. Les 
fils seront dénudés (longueurs en mm), 
étamés et repérés (figures 5 et 9). 

- Pour ETAMER un fil, torsader ses 
brins, chauffer cette extrémité et y dépo 
ser un peu de soudure (figure 5). 

- Le REPERAGE consiste à associer 
une couleur à un chiffre pour chaque fil 
du cable. Exemple : le fil rouge ira d'un 
côté au 2 du connecteur (figure 8) et de 
l'autre, bien sûr, au 2 du Cl (figure 1 0) . 

Et ainsi de suite... Enfiler le capot du con 
necteur (figure 7) sur le câble afin de ne 



- Les DIODES : plier les pattes. La 
bague indique la CATHODE (figure 6). 

- Les POUSSOIRS : quatre pattes. 
Rien à faire de particulier. 
L'implantation des composants sur le Cl 
se fera telle que le montre la vue de des- 
sus (figure 7) et dans l'ordre suivant : 
diodes tout d'abord, cathode bien orien- 
tée, poussoirs ensuite et, pour finir, le 
câble, lui-même relié au connecteur sui- 
vant repérage (figure 8 à 10). 
Soudure : éviter de trop chauffer les dio- 



s qui sont relativement sensibles à la 
aleur. Couper les pattes (ou queues) 
après soudure (figure 6). 

CONTROLE 

Les diodes sont-elles correctement orien- 
s fils reliés aux bons endroits, les 
soudures toutes faites ? Visser le capot 
sur son connecteur. Coller une plaquette 
tcarton ou matière plastique) 
cuit imprimé afin d'isoler les soudures. 
Brancher la prise femelle sur le port joys- 
tick de l'ordinateur. Tester OCTODE 
avec FRUITYFRANCK ou 2 pour les 
jeux, CHERRY PAINT ou AMSTRADIVA- 
R1US pour les utilitaires. 

s'attaquer à la ver 
an remarque (figure 2) : 
s communs 8/9 
E ON/OFF de la touche centrale 
T inverseur des feux 6/7 
M touches bas profil disposées en cer- 
ine membraneH 






H 




OH 




HD 


-*-®- 


® 


-®— »- D 


GB 


■ 


BD 



INITIATION 



Un programme nouveau ne fonctionne 
jamais du premier coup. Il y aura toujours 
au moins un "bug" lou "bogue") qui 
provoquera un plantage ou un résultat 
que l'on n'attendait pas du tout. 
Il y s deux sortes de bugs : le franc et 
net, du genre "Syntax error in 340" ; et 
puis le farceur, le sournois, qui vous fait 
croire que tout marche bien et qui, de 
temps à autre, vous affiche un résultat 
faux. Non seulement ce bug fantôme est 
parfois difficile à remarquer, mais sa 
localisation va demander beaucoup de 
ruse et de méthode. Heureusement, il est 
plus rare. 

Mais on peut aussi diviser les auteurs de 
bugs [nous] en deux catégories : ceux 
qui programment et ceux qui recopient 
■des listings publiés dans des revues ou 
des livres. Et la, les causes d'erreurs sont 
bien spécifiques. De ce fait, c'est la clas- 
sification que nous allons suivre : nous 
parlerons donc d'abord des erreurs de 
recopies, puis des erreurs de conception 
de programme et, enfin, d'un domaine 
commun, la localisation d'un bug caché. 



Il serait trop facile d'ouvrir notre parapluie 
en disant : «Bien sur I Ils copient sans 
essayer de comprendre !» ; car même un 
bon programmeur a parfois toutes les 
peines du monde à comprendre un listing 
écrit par quelqu'un d'autre I Pourquoi ? 
Parce qu'ils ont des façons de penser 
complètement différentes. Alors le 
"copieur" renonce à comprendre la pen- 
sée «contre nature» lia sienne) de l'au- 
teur du programme, et il se met à copier 
«bêtement" en lui faisant confiance. 




t hum 



31 la frappe ; surtout si vous pOSséÔÈï 
n CPC 464. Peut-être y lirez-vous qu'il 
s s'adresse qu'au 6128 ! 



Les confusions de 

Il est très facile de mal interpréter cer 
tains caractères, surtout quand un défaut 
d'encrage chez l'imprimeur vient compli- 
quer les choses Je pense à tout ce qui 
ressemble à une barre verticale ; cela 
peut-être un I majuscule, un chiffre 1, un 
L minuscule ou la barre obtenue par 
SHIFT+-a commercial. 
Nota : si vous nous envoyez un pro- 
gramme en vue de publication, ne pro- 
grammez qu'en majuscules [sauf pour 
les REM et les textes entre guillemets), 
et pensez à ne pas utiliser la variable I 
ou des noms de variables commençant 
ou se terminant par cette lettre. Sinon, 
attendez-vous à recevoir beaucoup de 



Autres cou fusions ckisMiques, le chiffre 
et la lettre 0, 5 et S, le point et la vir- 
gule, les deux-points et le point-virgule, 
le G minuscule et le chiffre 9. Ajoutons 
à cela quelques ctourderies dyslexiques 
courantes après 23 heures 30, du genre 
slash et anti-Elesh Iles touches sont voi- 
sines...), < et >, M et W en 
minuscules... 

Autre cause d'erreurs fréquentes, les 
espaces (ou blancs) en trop ou en 
moins : lorsque l'on veut indiquer qu'une 
variable chaîne RS est "vide" ou nulle, 
on écrit RS = "", c'est-à-dire deux guil 
lemets consécutifs. Si vous mettez un 
espace entre eux deux, ça change tout ! 
R$ n'est plus vide, elle est de un carac- 
tère. Pour indiquer que R$ ^un blanc, il 
est plus prudent de programmer 
RS = SPACESfl ). Autre cause heureuse- 
ment plus rare certains programmeurs 
(qu'il faudrait battre !l ont remarqué que 
le blanc est parfois un caractère de sépa- 
ration en BASIC ; alors, dans des lignes 
de DATA, il mettront un espace en guise 
de virgule ou dans un ordre PRINT pour 



Michel ARCHAMBAULT 



remplacer les points virgules. Ça marche. 
mais si le recopieur oublie un de ces 
blancs, c'est la catastrophe assurée 



Les adaptations malheureuses 

Pour rendre la recopie moins «bébête», 
H est humain d'apporter çà et là des peti- 
tes modifications «sans importance», 
histoire de personnaliser un peu ce que 
l'on tape. Très bien, mais de nombreux 
pièges vous guettent. 
Premier cas. les noms de variables Afin 
de rendre le listing plus clair, l'auteur a 
utilisé des noms de variables longs, par 
exemple RAPPORT =A/B, et comme ce 
nom revient souvent, vous décidez que 
RAP est bien suffisant Oui, mais en 
poursuivant la frappe le lendemain, voilà 
que vous l'appelez RAPP... Autre cas 
avec par exemple DIRECTION = 4, trop 
long ! Vous tapez Dl - 4, Et voilà un futur 
"Syntax error" ; parce que Dl est un mot 
BASIC, peu usité certes, mais c'est un 
"mot réservé" (voir la liste des "mots 
réservés" dans votre manuel). 
Une autre aventure î Les numéros de 
lignes. Un programmeur qui tient à con- 
server son standing fait des sauts de 
numérotations a des multiples de 1 00 ou 
de 1000, à chaque fois qu'il aborde une 
nouvelle étape. Ça fait "rangé" et net, 
surtout quand ces numéros de lignes 
«tout en zéros» sont des REM expliquant 
ce qui suit. 

Oui, mais il y a le copieur qui se dit que 
«AUTO c'est pas fait pour les chiens» et 
aussi que «Les REM ça ne sert à rien, 
donc je saute...» Mais il n'empêche qu'il 
transcrira scrupuleusement.. IF N = 
THEN GOTO 800. Des GOTO qui iront 
se perdre dans les marécages... 
Vous pouvez vous dispenser du texte de 
REM de la ligne 2000, mais tapez au 
moins 2000', sinon gare au "LINE DOES 
NOT EXIST IN 340" 



les impondérables 






gramme qui «aurait dû prévoir» que l'on 
va lancer son programme «à chaud» et 
non pas après un CTRL +SHIFT + ESC. 
En effet, il y a des choses mémorisées 
qui ne s'effacent pas par RUN ou par 
NEW ; c'est le cas de MODE, des cou- 
leurs de l'écran, des SYMBOL et des KEY 
DEF. Pour illustrer cela, voici deux gags 
authentiques. 

- Gag n° 1 : ce programme débute par 
un GOSUB qui définit des caractères par 
SYMBOL, donc précédés par un 
SYMBOL AFTER. Premier essai, impec- 
cable I Tout content, on le relance par 
RUN, Aussitôt, plantage avec "Improper 
Argument in 30" ! En 30, il y a le 
GOSUB qui, lui, débute par SYMBOL 
AFTER 64 et, comme le précèdent, 
SYMBOL AFTER.64 est resté actif, ça 
plante. Faire toujours précéder un 
SYMBOL AFTER par un CALL &BB04 qui 
élimine les précédents. 

- Gag n° 2 : cet utilisateur de CPC 
couleur détestait programmer en lettres 
jaunes sur fond bleu foncé. Il commen- 
çait toujours une saisie de listing par 
INK 1,0:PAPER 2:CLS 

donc en lettres noires sur fond bleu ciel. 
C'est effectivement plus net et reposant. 
Oui, mais le long programme recopié 
commençait par PEN2:CLS... Sitôt lancé 
par RUN écran est vide et bleu ciel ; ESC 
et clavier apparemment inactifs ; affole- 
ment I Reset. Normal avec PAPER et 
PEN de la même couleur... 

Est-ce tout ? 

Cette liste de "gaffes" n'est pas exhaus- 
tive, hélas. L'auteur s'est inspiré de plu- 
sieurs années de «courrier des lecteurs» 
et d'animation de club informatique, pour 
recenser les cas les plus classiques ou 
les plus "curieux". A ce propos, si vous 
êtes complètement bloqué malgré moult 
vérifications, n'écrivez pas simplement 
«J'ai retapé très fidèlement le listing de 
votre programme TRUC et il ne marche 
pas. Dites-moi où est l'erreur». Ce ne 
sera possible que si vous joignez votre 
listing ou, à défaut d'imprimante, une 
cassette. Avec un enregistrement, le dia- 
gnostic sera quasi immédiat, d'où une 
réponse rapide. 

LES FAUTES DE PROGRAMMATION 

Comme nous l'avons dit au début, il y a 
l'erreur "immédiate", genre "Syntax 
Error" ou "Improper Argument", et l'er- 
reur "fortuite" qui survient un |our dans 
un programme qui tourne depuis long- 
temps et ce à la suite d'un concours de 
circonstances que le programmeur 
"aurait dû prévoir" (comme pour la fusée 
Ariane, mais un logiciel est quand même 
vendu moins cher...). 
Tout cela ne veut pas dire qu'un bug se 
traduise toujours par un arrêt-plantage ; 
il peut aussi fournir des résultats absur 
des qui, pour l'instant, ne provoquent 
pas de plantages. 

Il n'est pas possible de faire une liste de 
toutes les erreurs possibles en BASIC. 
Ok ? En revanche, il va être bon de 



dénoncer celles qui sont au Hit Parade ; 
et qui d'ailleurs s'y accrochent... On 
commencera donc par l'éternel grand 
champion toutes catégories : 

Les initialisations de variables 



Contrairement à la plupart des langages, 
le BASIC initialise toute variable incon- 
nue à zéro. Faites PRINT 22, réponse ; 
PRINT ABCS, réponse chaîne vide [""). 
Alors, on en prend l'habitude et pour 
démarrer un comptage lou "incrémenta- 
tion"! on écrit simplement K = K+1. 
Donc, au premier passage, K = 0+1 et 
ainsi de suite. Supposons que K ait 
atteint la valeur 15. Puis le programme 
est amené à repasser par là pour de nou- 
veau comptabiliser de 1 à... Si on n'a pas 
pris la sage précaution de réinitialiser par 
K = 0, le deuxième comptage va démar- 
rer à 1 6 I 

Même remarque avec le classique 
WHILE RS = "":RS = INKEYS:WEND 
au premier passage l'ordinateur attend 
que vous pressiez une touche. Vous 
pressez N, donc RS = "N", on "passe" 
le WEND. Deuxième passage par cette 
ligne : RS vaut toujours "N", donc "pas- 
sage" du WEND sans attente d'un 
INKEYS au clavier ! Vu ? Il aurait suffit 
juste avant le WHILE de programmer 
R$ = "". 

Une autre source d'ennuis est notre man- 
que d'imagination pour les noms de 
variables ; toujours les mêmes lettres qui 
reviennent, d'où risque d'homonymies 
catastrophiques. Exemple : vous avez 
programmé un compteur par 1 = 1 + 1. 
Votre programme fonctionne très bien ; 
puis, un jour, vous décidez de le complé- 
ter par un nouveau sous-programme qui 
affiche un message à l'écran. Pour avoir 
le temps de le lire, vous mettez la clas- 
sique boucle d'attente de trois secondes 
FOR I = 1 TO 3000:NEXT 
RETURN et le cycle repasse par le comp- 
teur qui saute ainsi à 3002. Surprise... 
Deux conseils : 

- Initialise. vos variables 
|K =0:R$ = "") même si cela semble ne 
servir à rien (pour l'instant...!. 

— Méfiez-vous des homonymes en 
noms de variables, tout particulièrement 
lorsque vous retouchez un long pro- 
gramme ancien. Adoptez des noms à 
consonnances martienne ou vénusienne, 
du genre ZZZ ou WYW ; c'est plus sûr 
que I, N ou K... 



Nota 

Pour les cas épineux, je vous recom- 
mande le programme "Références croi- 
sées" de TO MINH TRI, publié dans CPC 
n° 7 page 65 : il liste les variables par 
ordre alphabétique avec les numéros de 
lignes où elles figurent. Une pure 
merveille I 



Les farces des valeurs nulles 



pour un ordinateur qui réplique par "Divi- 
sion by zéro in...". Donc, à chaque divi- 
sion, posez-vous la question de savoir s'il 
y a une "chance" pour que le diviseur 
soit nul. Exemple classique A = B/IC-D], 
Même si la probabilité pour que C = D est 
infime (donnerait division par zéro), dites- 
vous que cela arrivera le jour où vous 
ferez une démonstration de votre pro- 
gramme. ( = loi de MURPHY ou de 
"l'emm... maximum"), il faut prendre 
ses précautions 

CD = C-D:IF ABSICDK0.001 THEN 
CD -0.001 
A = 8/CD 

Autre cas, les paramétrages de comman- 
des BASIC, par exemple LOCATE 
12,Y:PRINT AS 

Il est sage de faire précéder par 
IF Y<1 THEN Y = 1 
un risque associé est celui de l'OVER- 
FLOW avec les nombres entiers : 
N% =A/B est dangereux. Ecrivez plutôt 
IF ABSIA/BK 32767 THEN N%=A/B 
Les INPUT et les DIM 
Ces causes d'erreurs arrivent en troi- 
sième position. Ce sont des sujets assez 
vastes et nous leur avons déjà consacré 
récemment deux articles : "La gestion 
des réponses" dans CPC n" 19 ; "L'ex- 
ploitation des tableaux DIM" dans CPC 
n° 21. 

La logique illogique 
Les fonctions "logiques" sont les 

IF... THEN, ELSE, AND, OR, NOT et 
XOR. 

XOR( - OU exclusif] est d'un emploi peu 
fréquent. Ces fonctions ont un fonction- 
nement TRES STRICT, mais qui ne géné- 
rera jamais de code d'erreur si elles exé- 
cutent tout autre chose que ce que vous 
aviez prévu. C'était à vous de ne pas les 
employer à tort et à travers. Hélas, c'est 
facile... 

Le risque initial est de traduire en BASIC 
une pensée en "langue française", 
exemple «j'accepte les réponses "0" ET 
"OUI" comme valables», alors le "débu- 
tant" programme 

IF RS = "0" AND RS="OUI" THEN 
GOSUB 5000 

ce qui est "logiquement" impossible ; il 
fallait écrire OR et non pas AND. 
Mais la championne des gaffes classi- 
ques consiste à mettre plusieurs "clau- 
ses" (séparées par des :) sur une même 
ligne, en oubliant ce principe essentiel : 
si un IF n'est pas satisfait, les clauses 
suivantes ne sont pas lues par BASIC. 
IF N>5 THEN P- 10:A = B'2 
Ici avec N = 3 le A = B* 2 n'est pas exé- 
cuté ; après un IF non vérifié BASIC 
passe immédiatement à la ligne sui- 
vante ! Sauf s'il y a un ELSE. 
IF N > 5 THEN P = 1 ELSE P =■ 20 
Un ELSE est très catégorique ; passé 
cette ligne, on aura P=10 ou bien 
P = 20. Pas d'autre alternative possible I 
On peut mettre un IF après un ELSE, 



BUG, OU ES-TU ? 



IF N>5 THEN P-10 ELSE IF N<3 

THEN P-30 

Cela se traduit par la "table de vérité" 



6 10 

7 10 
A méditer... 

Une condition non vérifiée prend la valeur 
zéro, vérifiée elle vaut -1 et non pas 1 . 
Essayez PRINT (12 =2*6), réponse -1. 
Remplacez 12 par 13, réponse zéro. 
Supprimez les parenthèses, ça marche 

C = (12 = 2*6I 

IF C THEN GOSUB 3000 

Ce IF C signifie "si C non nul". Vous 

pouvez le remplacer par IF C = -1 , ma/s 

pas du tout par IF C = 11... 

Dans le c 



IF C -0 THEN GOSUB 4000 ou IF NOT 
C THEN GOSUB 4000.1F NOT C signifie 

Pour combiner dans une même ligne des 
AND et des OR, il ne faut pas hésiter à 
utiliser des parenLheses Même si elles 
ne servent à rien, c'est plus sûr et le lis- 
ting est plus clair à lire 
IF (MARQS ■ "AMSTRAD") AND 
(TYP-464 OR TYP = 664 OR 
TYP = 6128| THEN PRINT "c'est le meil- 
leur BASIC" 

Un "test" par =, > , <, est donc noté 
par 1 (vrai) ou par zéro (faux). Ceux qui 
aiment les maths s'apercevront alors que 
AND est l'équivalent de " et OR l'équi 
valent de + . 

Avec de l'aspirine à portée de main, vous 
pouvez imbriquer plusieurs niveaux de 
parenthèses avec des OR, AND, NOT, 
mais alors prenez la précaution de tes- 
ter votre ligne logique par un petit pro- 
gramme d'essai (commençant par des 
INPUT) et ce afin de vérifier que la "table 
de vérité'' obtenue currespond bien à vos 
desiderata. 

Attention à la fonction XOR ! Super res 
trictiva : (A = & XOR B ^ 1 ) n'est vraie 
( 1 ) que si l'un seulement de ces deux 
lests est vrai. Faux si ces deux égalités 
sont vérifiées (ou aucune des deux) 

Les sorties de boucles 

Supposons une boucle FOR NEXT qui 
débute en ligne 300 par FOR N = 1 TO 
1 5 et qui se termine par 460 NEXT. En 
ligne 350, un IF permet de sauter la suite 
du "traitement" et de passer au N sui- 
vant. La syntaxe normale est 
350 IF .... THEN GOTO 460 
alors la grosse bourde (hélas classique) 
serait d'écrire 
350 IF... THEN NEXT 
En effet, quand BASIC rencontre un 
FOR, il repère d'abord où est son NEXT, 
ici en 460. Il ne verra pas celui de la ligne 
350 "masqué derrière" un IF. Alors si le 



IF le conduit a ce NEXT en 350, il risque 
fort d'y avoir du vilain... 
Si, en ligne 380, vous prévoyez un ca; 
permettant de mettre fin à cette boucle, 
donc avant que N atteigne 1 5, la pire des 
choses serait d'y mettre un GOTO 470. 
En ce cas, il suffit d'écrire : 
380 IF... THEN N = 15:GOTO 460 
et l'on sort PROPREMENT, sans risque 
de choc en retour. 

Idem pour une boucle WHILE WEND On 
met la variable à la valeur attendue, et 
GOTO le numéro de ligne du WEND. 
Idem pour les sous-programmes : pour 
une sortie prématurée ne pas faire 
IF... THEN RETURN mais THEN GOTO 
le numéro de l'UNIQUE RETURN. 
Si, dans une boucle ou dans un sous- 
programme, vous désirez Faire un détour 
vers l'extérieur, il est formellement inter- 
dit d'opérer par GOTO I Uniquement par 
GOSUB Sinon c'est l'affolement des 
"pointeurs". 

On ne peut pas imbriquer des boucles 
WHILE WEND (dans le BASIC des CPCI. 

LES ERREURS DU PASSE 

Ces erreurs ont deux causes : 

- Présence de lignes obsolètes que l'on 
a oublié d'effacer, par étourderie. Son 
des lignes dont on a changé le numéro 
pour les placer ailleurs, soit des lignes de 
tests que vous aviez insérées ça et là ; 
du genre 

629 PRINT N ;AS:ST0P 

(utilisez toujours des numéros de lignes 

se terminant par 9 ; plus faciles à 

repérer...! 

— On s'est trompé de version ! La pre- 
mière chose à faire, avant de modifier un 
programme, est d'en changer la date 
dans le REM de la ligne 10. Et comme 
vous avez pris la précaution (?) d'enre- 
gistrer votre logiciel vedette de 13 kilo- 
octets sur quatre disquettes différentes, 
votre dernière modification porte en fait 

sion... Alors... 

LES LOCALISATIONS DIFFICILES 

Votre programme ne plante pas, mais 
conduit à des résultats farfelus. Donc le 
bug peut être n'importe où ! Le premier 
travail consiste alors à localiser la zone 
du listing qui est coupable. Par exemple, 
ce passage de 20 lignes que l'on réduira 
ensuite à une. Il faut jouer au détective 
Insérez des lignes-mouchard comme 
629 PRINT N;AS:ST0P 
et vous redémarrez en tapant CONT. 
- Testez en mode direct des sous- 
programmes. Par exemple 
A=4:X-0:AS = "Paul ":GOSUB 3000 
Et là, toujours en mode direct, interrogez 
par PRINT certaines variables. 
Autre variante des "données fixées" : 
NB=5;BS -t"JEAN":GOTO 540 
et vous récupérez les résultats plus bas 
dans une ligne-mouchard. Remarquez 
qu'il ne faut pas utiliser RUN qui annule 
toutes les variables en cours, mais GOTO 
ou GOSUB qui les conserve. 



Deuxième degré : Vos mouchards vous 
donnent partout des indications norma- 
les, donc le bug n'apparaît que pour cer- 
taines valeurs de la variable M. Vous ne 
voyez pas pourquoi, mais le fait de con- 
naître les valeurs coupables va vous met 
tre sur la voie. 

1 FOR M = -10 TO I 20:G0SUB 5000 

2 IF LEN(BS)>5 THEN STOP 

3 NEXT:END 

Et on lance par GOTO 1 
Troisième degré : ça y est ! Vous avez 
identifié ce qui provoque l'erreur, le 
groupe de lignes où le mal se développe, 
mais vous ne comprenez toujours pas 
pourquoi. En effet, il s'agit d'un passage 
très complexe avec des IF... THEN 
GOTO (ou GOSUB) ELSE GOTO. ..etc. 
Par où passe le programme ? Les armes 
sont TRON et TROFF (abréviations de 
TRACE ON et TRACE OFF). 
TRON va faire inscrire à l'écran les numé- 
ros de lignes où passe le programme 
(entre crochets). TROFF annule TRON. 
Mettez très peu de lignes entre TRON et 
TROFF car un écran est vite rempli I 

Ça y est le bug est mort, ça marche. Sur 
tout ne sauvegardez pas ! Votre pro 
gramme en RAM est un champ de 
bataille. Notez sur papier la fameuse ligne 
corrigée, puis NEW I LOAD ; correction 
de la ligne et enfin SAVE. Vous voyez 
pourquoi ~> 

CONCLUSION 

Le bug, c'est le sel de la programmation. 
Que ce serait triste si tous les program- 
mes fonctionnaient toujours du premier 
coup I Que c'est bon un bug farceur qui 
loue à cache-cache pendant des heures, 
que l'on traque en se prenant pour 
Columbo Et puis çà dispense les pro- 
grammeurs de s'acheter des logiciels 
i 270 francs la disquette.. 



INITIATION 




Yves GERAULT 



(SUITE) 



Les lignes PASCAL qui appartiennent au bloc instruction sont elles-mêmes appe- 
lées instructions. Une instruction PASCAL sera donc constituée par les caractè- 
res compris entre deux points-virgules. Comme nous l'avons vu précédemment, 
cette instruction peut être écrite sur une ou plusieurs lignes écran. Voyons main- 
tenant les instructions que le concepteur de PASCAL TURBO met à notre 
disposition. 



INSTRUCTION COMMENTAIRE 

Pascal est un langage compilé. Nous avons vu que le code exé- 
cutable (en binaire! est obtenu à partir du code source (en ASCII) 
via le passage par un traducteur (la compilation). Un point très 
important du fonctionnement de ce compilateur est qu'il ne s'oc- 
cupe pas de ce pu'il va reconnaître comme des commentaires. 
Nous pouvons donc en mettre autant que nous voulons dans 
notre texte source cela n'allongera en rien notre code objet. 
Alors ne nous en privons pas. 

Le compilateur reconnaît comme commentaire tout ce qui se 
trouve entre des accolades. Le commentaire commence avec 
une accolade ouvrante et se termine avec une accolade fer- 
mante. Bien sûr, ce sera une erreur fréquente d'oublier cette 



accolade fermante, ce qui fait que le compilateur prendra tout 
le reste de votre programme comme un commentaire. Mais cette 
erreur est facile à détecter avec un peu d'entraînement. 
Pour assurer la compatibilité de PASCAL TURBO sur des micro 
ne possédant pas les accolades, le coneepteui autorise une autre 
manière de signaler les commentaires : il s'agit des caractères 
parenthèse ouvrante suivie immédiatement par 
I" astérisque < <(* > > pour le début de commentaire et bien sûr 
de astérisque suivi immédiatement de parenthèse fermante pour 
la fin de commentaire 

Où peut-on placer des commentaires ? A n'importe quel endroit, 
dans n'importe quel bloc ou sous-bloc en remplacement d'un 
séparateur. En d'autres termes, le seul endroit où il est interdit 

• • • 



de mettre un commentaire, c'est à l'intérieur d'un identificateur 
car, par définition, un identificateur est une suite de caractères 
ne comportant pas de caractères séparateurs. Nous utiliserons 
largement ces possibilités en commentant très abondamment 
nos listings, 

LES OPERATEURS ARITHMETIQUES 

Il est possible de faire subir à des variables, un certain nombre 
de traitements a l'aide de symboles appelles opérateurs arith- 
métiques, ils sont au nombre de 12. 



Prenons un exemple : si nous voulons calculer la somme de A 
et de ES et mettre le résultat dans C nous pouvons schématiser 
l'opération par 

AFFECTER à C le RESULTAT DEA + B 

Ce qui va s'écrire en BASIC : LET C =A +8 ou très malheureu- 
sement par abus de langage C = A + B. Ce qui n'a aucun sens 
strictement parlant. Bien sûr, tous ceux qui font de l'informati- 
que le savent, mais il faut admettre que l'écriture de I = I +■ 1 a 
de quoi choquer bien des débutants. 

PASCAL fait partie des langages qui n'acceptent pas ce fâcheux 
abus de langage. C'est pourquoi il demande à ce qu'on note 

AFFECTATION par le syntaxe C : = A + B. Ce < < 
est le symbolisme réservé à l'AFFECTATION, o 
symbolisme <<=>> à l'égalité comme en anthmêtiqui 




not négation bit à bit. 

or ou logique bit à bit. 

xor xor logique bit à bit. 

and and logique bit è bit. 

shr décalage de bits à droite. 

(shift right). 

shl décalage de bits à gauchi 

(shlft left). 

mod reste de la division. 

div division 



Les opérateurs + - * / peuvent agir sur 

des ob|ets de type entiers ou réels, mais, 

attention, le résultat n'est pas toujours du même type que les 
opérandes (ex :3/5 = >0.6, les deux opérandes sont entiers, 
mais le résultat est réel). Le langage PASCAL vous signalera 
une erreur de lonciionrifimem si vous ni.; \ic voyez pas ce genre 



Par contre, les opérateurs arithmétiques not, or, xor, and, shr, 
shl. mod, div, ne peuvent travailler que sur des entiers et le résul- 
tat est un entier. 

Une suite d'actions sur une suite d'objets est appelée une 
expression. Dans, cette expression comme en BASIC, il y a un 
ordre de préséance entre ces opérateurs. 

- * / div mod and shi shr 

— + - or xor 

En cas d'égalité de priorité, le calcul de l'expression se fera de 
gauche à droite et l'ordinateur prendra les opérateurs quand il 
les trouvera. 

Comme en basic, pour éviter les erreurs, mettez vos expres- 
sions entre parenthèses pour forcer la priorité des opérateurs. 

QUELQUES IDENTIFICATEURS PARTICUUERS 

Certains identificateurs ont une valeur par défaut : 

pi : 3.1415926536 E + 00 

maxint : 32767 (c'est le plus grand entier possible! 

true signifie vrai pour un booléen, 

false : signifie false pour un booléen 

INSTRUCTION AFFECTATION 

Le résultat d'une expression est un objet qui a un certain type 
suivant la nature des opérateurs que nous avons fait agir. Il faut 
bien sûr stocker la valeur de cet objet à l'intérieur d'une case 
mémoire identifiée par un identificateur précisément. Ce qui 
revient à affecter à un identificateur le résultat de l'expression. 



rïoi 



mot réservé du langage PASCAL TURBO signalant que 
lions effectuer une sortie sur un périphérique, 
début des attributs de ma sortie ; 



jble dont je veux afficher 



oUtput : précise que le canal que ji 

séparateur d'attribut, 
var. 1 : identificateur repérant le 

résultat. 

séparateur d'identificateur. 

r_2 : idem var.1 . 

fin des attributs. 



Passons au deuxième exemple en ne parlant que dBs choses 
qui changent. 

Ist : précise que le canal que je veux utiliser est l'imprimante. 
a + b-c ; expression arithmétique dont le résultat sera imprimé, 
a shr 2 : idem. 






nple 



t canal privé de 



fich 1 : précise que le canal de sortie i 

l'utilisateur (un fichier disque peut-être] 

1 23 : PASCAL TURBO autorise les sorties directes de valeur. 

'mot' : idem, mais avec une chaîne de caractères, remarquez 

qu'en PASCAL, les chaînes sont encadrées par des apostrophes 

simples et non par des quotes " " comme en BASIC 

PASCAL présente une particularité du point de vue de l'affi- 
chage. Contrairement à BASIC, il n'a pas de tabulation par 
défaut. Il écrit ce qu'on lui demande d'écrire sur l'écran à la posi- 
tion où se trouvait le curseur à ce moment De plus, il ne laisse 
aucun espace entre les valeurs. C'est au programmeur de pré- 
voir les espaces nécessaires. Cela correspondrait à l'option 



BRANCHER LE TURBO 



<<;>> du PRINT BASIC. 

Certaines facilités sont cependant offertes qui permettent de 

solutionner tous les problèmes de mise en page. 

- Si on remplace WRITE par WRITELN, l'ordinateur, après avoir 
écrit ce qu'on loi a demandé, positionnera le curseur sur la pre- 
mière colonne de la ligne suivante : il fers un retour à la ligne 
comme une machine à écrire. 

— Prenons maintenant l'exemple numéro 4. 

var. 1:5:2 : signifie que le contenu de la variable var.1 sera affi- 
ché sur 5 colonnes, que le résultat sera cadré à droite avec 2 
chiffres après le point décimal lil est évident que var.1 est du 
type real). 

var 2:4 ; signifie que var 2 est du type entier et qu'il sera affi- 
ché sur 4 colonnes cadré à droite. 

mot:1 2 : en supposant que mot soit du type string, le contenu 
da mot serait affiché sur l'écran sur 12 colonnes. 

INSTRUCTIONS READ ET READLN 

Nous n'étudierons que le cas de READLN, Nous reviendrons plus 
tard sur l'utilisation de READ qui suppose une digression préa- 
lable sur la gestion du clavier sous PASCAL TURBO ainsi que 
sur la notion généralisée des fichiers (pas de quoi s'affoler, mais 
chaque chose en son temps). 

L'ordre READLN ressemble beaucoup à l'ordre INPUT du BASIC, 
mais en diffère aussi notablement. Des exemples sont donnés 
par le listing 2. 

La différence essentielle est qu'en PASCAL un ordre READ. cela 
ne sert uniquement qu'à lire et qu'un ordre WRITE cela ne sert 
uniquement qu'à écrire. C'est assez logique, mais ce n'est pas 
le cas en BASIC. La signification des divers champs de cette 
sst assez évidente, rappelons-les rapidement. 



readln : mot réservé du PASCAL TURBO signalai 

teur qu'une entrée vs être faite. 

I : début des attributs de l'instruction. 

inpul: désigne que cette entrée va être faite par I 

standard (le clavierl, 

, ; séparateur d'attribut. 

var 1 : identificateur de la variable à laquelle va 

la valeur de ce qu'on rentrera. 

var. 2 ; idem var 1. 

I : fin des attributs. 

; ; fin de I 



u compila 



Autre différence notable, les diverses valeurs devront être sépa- 
rées par des espaces et non des virgules comme en BASIC. 
Cette différence est plus gênante car, en cas d'erreur en entrée, 
il n'y a qu'une sanction : la pire II < < runtime error> > et arrêt 
de l'exécution du programme. Il y a, bien sûr, moyen d'éviter 
ce plantage du programme, mais ce n'est pas encore à notre 
niveau. Alors, faites très attention à la syntaxe de vos entrées. 
Bien sûr. puisque cette instruction se finit par un < <ln>>, 
le curseur se déplace au début de la ligne suivante après avoir 
terminé sa lecture. 

FONCTIONS ET PROCEDURES 

En dehors des opérateurs qui nous permettent déjà de calculer 
diverses expressions et d'en affecter le résultat dans une variable 
repérée par son identificateur, il est possible d'effectuer d'au- 
tres types d'actions qui se nomment des fonctions et des 
procédures. 

LES FONCTIONS sont des actions déjà connues de ceux qui 
ont travaillé en BASIC. Certaines portent même le même iden- 
tificateur par exemple <<cos>> pour cosinus, d'autres en 
différent par exemple < <length> > au lieu de < <len>> pour 
longueur d'un mot. Toutes ces actions ont un point commun : 
elles ne délivrent qu'une seule valeur qui doit être affectée à 
une variable (ex : cosinus 20.degrê: - cos (20);]. 



LES PROCEDURES ne sont pas totalement inconnues à l'utili 
sateur du BASIC. Prenons comme exemple <<locate 
20,10>> .En PASCAL TURBO, elle sont généralisées et plus 
performantes. Citons pour exemple < <str(valeur,mot)> > qui 
convertit une < <valeur> > numérique entière en un 
< <mot> >, une autre < <gotoxy (25,301 > > aura le même 
sens que notre < < locate > > en BASIC. 
Ces fonctions et procédures sont nombreuses et nous nous 
attarderons dans notre prochain article à vous les décrire. Mais 
où le PASCAL devient génial, c'est que s'il n'v en a aucune qui 
vous plaise pour résoudre votre problème. PASCAL vous auto- 
rise à la créer à votre guise et ensuite a vous en servir comme 
si Bile avait toujours existé (pratique non M!) Nous y reviendrons 
très prochainement. 

Pour clore cet article sur les entrées sorties simples, le listing 
3 vous montre ce qu'on peut faire avec les quelques instruc 
tions que vous avez maintenant à votre dispositron, 



ïting 2 : Exemple d'instruction readln 



iting 3 : Programme Pascal illustrant les notions développées d 




mnmm 

PHOTO-SPRITE 



• • • ; ; " 







< ft> ï ï.«r. cas* 
<M> iSi a jow . 
<0> .go«ne . 
<t> crayon ti-s 



PHOTO-SPRITE est une "boîte à outils" 
permettant la gestion de mini-images 
graphiques de 32*32 points (genre 
photo d'identité). 

Elle vous permettra de créer et de repro- 
duire des photos, blasons ou représen- 
tations d'objets pour agrémenter un jeu 



nitialis 



L'ensemble comprend : 

— une routine d'affichage en langage 
mach-ne baptisée PL0T1 . ou PL0T2 sui- 
vant son adresse d'implantation, qui sera 
générée par le programme BASIC CHAR- 
GEUR (listing n° 1) ; 

- deux utilitaires CONVERT et GENE- 
PHOT pour générer les fichiers PHO 



Dnn; 



n de la fenêtre n 






i vous e 



TOx.BIN 



les 



nage; 



visualiser. 

Le programme fonctionne sur CPC 464, 

664 ou 6128, 

LA ROUTINE PLOT1 

Ecrite en langage ASSEMBLEUR pour 
avoir un affichage très rapide, elle est 
appelée à partir du BASIC par un CALL 
&A100 après avoir fixé l'origine de la 
fenêtre graphique. La routine peut repro- 
duire des images en mode 1 avec qua- 
tre couleurs et en mode 2 avec deux 

Elle occupe les adresses &A100 à 
&A170, l'image occupe 1024 octets de 
&A200 à &A5FF, l'espace restant entre 
les deux est utilisé par la routine pour ses 
variables. 

Si vous désirez faire défiler plusieurs pho- 
tos au même emplacement, vous pou- 
vez appeler la routine par CALL&A1 38, 



jriez des exten- 
sions connectées autres que le lecteur de 
disquette (synthétiseur, interface 
RS232C...I la routine sera en conflit avec 
l'espace mémoire réservé pour ces der- 
nières. Les connaisseurs pourront faci- 
lement reloger la routine en modifiant les 
adresses de saut ; pour les autres, le 
chargeur BASIC de la routine vous pro- 
posera deux adresses d'implantation 
&A100 ou &8100. Si vous avez des 
extensions choisissez &81 00 mais pen- 
sez à modifier en conséquence les pro- 
grammes BASIC. 

LE PROGRAMME CONVERT : (listing 2) 

Vous permet de créer un fichier PHO- 
TOx.BIN à partir de données en DATA. 
Conservez les DATA de vos créations, 
si vous effaciez votre fichier BIN c'est 
le moyen le plus rapide de le reconstituer. 
Seules les photos en 2 couleurs peuvent 
être traduites en DATA (ces 2 couleurs 
correspondant aux ink et 1 de préfé- 
rence!, lors de la traduction, toute cou- 
leur différente de l'ink est considérée 



égale 



i 1. 



LE PROGRAMME GENEPHOT : 
{listing 3) 

L'outil indispensable pour donner libre 
cours à votre talent... 
— la saisie s'effectue directement à 
l'écran, le curseur est déplacé par les flè- 
ches ou avec le joystick. La case poin- 



tée prend la couleur du crayon sélec- 
tionné en pressant la touche COPY ou le 
bouton FEU du joystick. 
Les commandes disponibles sont affi- 
chées dans une fenêtre : 

— "Load" charge une photo après vous 
en avoir demandé le numéro. La photo 
sera affichée à l'échelle 1 et reproduite 
dans la grille de saisie pour être éventuel 
lement modifiée ; 

— "Save" sauvegarde une photo. Lors 
de l'appel de cette fonction, une mise à 
jour de l'image à l'échelle 1 est effectuée 
automatiquement. Un sous-menu vous 
permet la sauvegarde, l'édition des 
DATA (pour photos en 2 couleurs uni- 
quement) ou le retour au menu principal ; 

— "Couleurs" appelle un sous-menu 
qui vous permet d'adapter l'écran à votre 
goût et de choisir les couleurs des 
crayons. Les numéros de couleurs sont- 
affichés en regard des commandes de 
sélection pour le bord et les quatre 
encres ; 

— "Aller case" déplace le curseur à 
l'emplacement demandé ; 

— "Mise à jour" code en mémoire la 
photo de la grille et affiche la représen- 
tation à l'échelle 1 correspondante ; 

- 0, 1 ,2,3 sélectionnent le crayon actif 
pour la saisie, ce dernier est repéré en 
permanence par une flèche ; 

— pour les 2 dernières commandes, 
"Effacer" et "Quitter", une confirmation 
est demandée. 

NB ; un BREAK peut se produire si vous 
demandez le chargement d'une photo ne 
figurant pas sur la disquette, ce type 
d'erreur n'étant pas mterceptable en 
BASIC, il vous faudra relancer le pro- 
gramme par RUN 520. 



ADAPTATIONS DE LA ROUTINE PLOT 

La routine peut reproduire également les 
photos en mode 2 (seulement celles 
générées en 2 couleurs). 
L'affichage en 2 couleurs peut être accé- 
léré en pokant des en &A14B. &A14C, 
&A14D. 

Vous pouvez changer les dimensions de 
la fenêtre graphique, mais il vous faudra 
également modifier GENEPHOT ainsi que 
CONVERT et tenir compte de la taille 
mémoire des fichiers PHOTOx.BIN. 
En conclusion, cet ensemble devrait vous 
permettre de donner à vos programmes 
un "look pro" et vous inciter à vous ini- 
tier à l'Assembleur, dans ce dernier cas 
deux ouvrages vous seront nécessaires : 

- le FIRMWARE de votre CPC qui vous 
donnera toutes les informations sur les 
routines utilisables de la ROM ; 

- PROGRAMMATION DU Z80 de 
RODNAY ZAKS aux Editions SYBEX qui 
est la véritable bible pour ce micropro- 



$qkc d'emL 



LES PASSAGERS 
DU VENT 2 

(NFOGRAMES 

Aventure 

Durant une période de trois mois, 
voua avez pu tomber sous le 
charme des Passagers du Vent. 
Maintenant, il est temps de passer 
ii la suite qui d'ailleurs n'est 
certainement pas la fin. 
Dans ce deuxième épisode, nous 
retrouvons Isa, héroïne principale, 
qui est une jeune libertine 
entreprenante en cette (in de 
XVIII' siècle. Elle a entrepris de 
voyager dans le mande entier Ides 
ports bretons aux côtes africaines) 
afin de récupérer un titre qui lui a 
été usurpé lorsqu'elle était petite : 
celui de comtesse. 
Avec "l'heure du serpent", nous 
nous retrouvons dans le village du 
roi KPENGLA. Isa va devoir 
affronter aussi bien les mystères 
vaudous que les fauves de la 

Nous retrouvons avec joie un 
graphisme toujours aussi éclatant 
et envoûtant avec, comme dans le 
premier épisode, une musique 
superbe changeant avec chaque 
scène... Cette fois, il y a huit 
scènes différentes avec un petit 
plus : en effet, à la fin des cinq 
premiers tableaux, le sage vous 
pose une question sous forme 
d'énigme ; è vous de sélectionner 
le bon personnage pour donner la 
réponse et obtenir ainsi un indice 
pour l'issue finale de l'histoire. 
Dernière nouveauté par rapport au 
numéro 1 : en plus du défilement 
des légendes obtenues en 
sélectionnant les icônes des 
personnages, vous pouvez 
intervenir parfois sur la partie 
graphique et utiliser ainsi certains 
objets. 

En conclusion, la série des 
Passagers du Vent doit avoir se 
placB dans votre "lagithèque". 



IW.KirLS 




LE CHEVALIER 
BLANC 

COBRA SOFT 
Arcade/Aventure 

Avec cette nouvelle production de 
Cobrs, vous entrez dans une 
histoire de type moyenâgeux avec 
le roi, la princesse et le beau 
chevalier servant qui, de surcroît, 
est blanc pour l'occasion. 
Tout commence lorsque la 
princesse et le Chevalier Blanc se 
promènent tranquillement. Ils se 




font attaquer par d'étranges 
créatures qui, non contentes 
d'enlever le princesse, capturent 
également les armes du Chevalier. 
Celui-ci n'a alors d'autre but que 
d'aller délivrer la balle dans un 
étrange château après avoir 
récupéré ses armes. Pour cela, il 
doit commencer par capturer un 
cheval blanc... Ensuite, il devre 
traverser les marais en veillant 
bien è ne pas se trouver sur le 
chemin d'une étrange créature 
blanche car, si tel était le cas, il 



se retrouverait à son point de 
départ. Pouvant récupérer ses 
armes dans les marais, il ne lui 
reste plus qu'à pénétrer dans le 
château et à terminer l'histoire en 
héros I... 

Ce jeu requiert une certaine 
habileté au joystick. Si vous 
possédez cette qualité, vous 
pouvez passer un agréable- moment 
avec ce logiciel "mignon" tent eu 
niveau du scénario qu'au niveau du 
graphisme ou de le musique. 



BALLBLAZER 

ACTIVISION 
Arcade! Simulation 

Encore un logiciel présentant un 
jeu se passant dans le futur, mais 
possédant deux éléments 
traversant tous les temps : un 
ballon et des poteaux de buts !.., 
Le championnat Interstellaire de 
Ballblazer se passe dans les 
années 3000... et quelques 
poussières. Le but de la finale est 
de devenir le roi de tous les jeux. 
Pour y parvenir, vous vous 
retrouvez sur le terrain face è 
votre adversaire. L'écran de votre 
Amstrad vous permet d'avoir 
chacun votre propre vision du jeu 
puisqu'il est divisé en deux 
parties... Vous disposez de 3 mn 
(ou moins si vous le désirez t) pour 
prouver que vous êtes le meilleur. 
Après avoir cepturé la balle, il ne 
vous reste plus qu'è vous 
précipiter au lond du terrain pour 
marquer un but et de renouveler 
l'opération dix fois de suite I... 
Alors peut-être aurez-vous mérité le 
titre de "Masterblezer".., 
Avec Ballblazer. vous avez entre 
les mains la possibilité d'âtre un 
as de la balle grâce é des règles 
de jeu simples et è une bonne 
animation. Par contre, on ne peut 
pas dire qu'il y ait eu une très 
grande recherche graphique... 










également sur celle du déplacement 








de la batte. De cette manière. 




jrf)!>s t . 




chacun peut se régaler suivant ses 


f 


Igj^ 




propres capacités, d'une part, et 


-ïfï 




s'améliorer pour devenir un crack, 


^tâfê<-\ 




d'autre part. 


/Wfï^ 


lt£*i*m^ 




RELIEF ACTION 


K'WÉa 




LORICIELS 
Avenfure 

Ce nouveau logiciel veut nous 
apporter une nouvelle dimension au 
jeu d'aventure. Quelle est-elle ? 
Pensez-vous... Il s'agit tout 


•« ts 


&Zém 




simplement de relief dynamique ! 


• .,"■■* 




Campons tout d'abord le décor : 


•. '•■«.._' . 


.»' 




vous faisiez partie d'une équipe 










scientifique en mission sur la 


% l m> | 


1 






planète VEGA. Malheureusement, 
durant le vol, une mauvaise 
manipulation du la bar an tin a créé 
un monstre... Et, désormeis, vous 
êtes le seul rescapé de l'équipe. 
Vous allez devoir déambuler dans 
tout le vaisseau (rassurez- vous, il 
n'y a que trois niveaux et une 










cinquantaine de pièces 1), afin de 










rassembler pièces et indices pour 




HEAD OVER HEELS 


briques ! Ne vous fiez pas aux 


apparaître des lettres. Il y a neuf 


atteindre la navette. Bien entendu. 




OCEAN 


apparences, car ailes sont bien 


possibilités différentes, mais vous 


il est un objet que vous devez 




Arc ode /Aventure 


souvent trompeuses. C'est 


avez, par exemple, le E qui fait 


absolument vous procurer pour que 






entendu ! Il y a bien une balle et 


agrandir la batte ou le X qui vous 


le monde entier ne doute pas de 




Avec ce logiciel, vous devrez vous 


des briques, mais ce jeu est tout 


apporte une vie supplémentaire. 


vos propos : il s'agit du carnet de 




préparer à entrer dans un système 


simplement diabolique... 


Vous me direz que tout ceci est 


bord du commandant... 




solaire L'Empire de Dentnoire est 


Ce qui frappe en tout premier lieu, 


déjà fabuleux. Mais Km ko ut fait 


Relief Action nous propose des 




constitué de quatre planètes : 


c'est la multitude de couleurs 


encore mieux car vous avez des 


écrans avec le dessin des pièces 




Egyptus, Péni rentier, Satan et le 


qu'offre chaque écran. De plus, le 


options. En effet, eu départ, la 


sous forme filaire. De plus, le vue 




Monde du Livre. L'Empereur y fait 
régner un régime plus qu'oppressif 










i 








mais personne n'ose sa rebeller et 










c'est bien ce qui inquiète une 










planète voisine nommée bien sûr 

Liberté. 

Les habitants de Liberté sont 


DD00Z95D 


LEVEL ODE 1DD uuluufflm 








im~ 




composés de deux parties : la tète 


■K aHHISFlSBïl 


IMIlPSBiSHIŒHWflBBïîfSI 


B^^HSPHB! 




et les jamhas et ailes peuvent 


S ■ 


■ 






faire des actions en étant unies ou 


M"] 111 ■ 


■ 






séparées. Votre mission consiste è 


■ 






réunir les deux parties d'un 


3 ■ 


■ " 






habitant de Liberté qui sont 


s ■ 


■ 






enfermées dans le château da 


■ 








Dentnoire. Une fois cette première 


5 ■■ 




«« 




mission réalisée, il vous s ère peut- 


ff | 


1 ■ 


•1 




être possible de provoquer un 


■ 


' ■ 






soulèvement et de mettre fin è ce 


■ 


■ 






régime diabolique 1... 










Avec Head over Heels, vous 
évolue; dans un nombre très élevé 
de pièces avec des pièges à 
profusion. Vous avancez dans un 


■■■■ 


1 








■ 






beau graphisme en 3D, très riche 


3L ^^' »,^fe«» 


■i 


_^ 




en détails et avec des couleurs 
superbes ; une garantie pour passer 


«■MM 


il J tîîï 


*w^r 








un bon moment... d'autant plus 










que le jeu risque fort de ne pas 










Être terminé en 1 heure I 
KRAKOUT 










dessin formé par les briques 


batte se trouve è droite, mais 


en 3D peut être simplifiée en 




Grem/in Graphics 


change è chaque niveau. Mais ce 


vous pouvez essayer de jouer avec 


sélectionnant l'option relief qui fait 




Arcade 


n'est pas tout ! En effet, lorsque 


la batte è gauche {pas si évident 


apparaître des traits dédoublés 






vous touchez certaines briques. 


que cela 1). Enfin, derniers points 


bleus et rouges. Dans ce cas, vous 




En regardant le premier écran, 


elles subissent un phénomène de 


importants : vous pouvez agir sur 


devez utiliser la paire de lunettes 




vous vous dites : encore un casse- 


retournement et laissent alors 


la vitesse de 1 




elle, mais 


qui est livrée avec le logiciel. Ceci 








est un aspect intéressant du jeu, 


SIGMA 7 


mais il faut également considérer 




que vous suivez un déplacement du 




décor en temps réel, ce qui vous 




permet de vraiment participer é 




l'aventure. Somme toute, un 


Comme son nom l'indique, co \i 


produit très intéressant à étudier. 


se divise en 7 étapes, chacune 



d'elles comportant trois phases. 




Vous êtes aux commandes d'un 
umssea h et vous devez taire 'ace. 
avec réflexes et vivacité, é tout ce 
qui se présente devant vj„s sans 
aucune exception, car vous n'avez 
vraiman! pas le temps de vous 
poser le question : ami ou 
ennemi ? 

Vous devez tout d aboro atteindre 
une usine en vous trayant un 
chemin entre les mines de défense 
aèneooe {la distance è parcourir 
grandit é chèque étape., i. Une fois 
arrivé "à boo port", vous diriilave; 
dos sentiers sur lesquels des 
rouuls mires se précipitent sur 
vous de façon inamicale. Avant de 
sortir de cette phase, retenez bien 
le motif que présentent certaines 
pastilles car il vous sere fort utile 



lors de la phase finale... Dans 
celle' ci, vous devrez être très 
rapide pour reconstituer le dessin ; 
cette partie est vraiment tris 
délicate. 

Avec ce logiciel, vous trouverez 
une bonne séance d'entraînement 
aux réflexes avec, de surcroît, un 
graphisme et un son agréables... 



SCALEXTRIC 

m 

Simulation 

A cette époque où la saison des 
Grands Pnx a recommencé, vous 
pouvez tester voue habileté é tenir 
un vo-ani de Formule 1 avec ce 
logiciel. 

Vous avez la possibilité de faire la 
course contre l'ordineleur ou 
cootie uo adversaire eo chair et en 
os (malheur à ii. s'il hérite des 
commeodes au clavier !). 
Pour commencer, il (eut 
sélectionner les conditions dans 
lesquelles vous voulez concounr 
après le choix du circuit (vous 
evez 17 circuits de Formule 1 è 
votre disposition), il ne vous reste 
plus qu'à indiquer le nombre de 
tours que vous désirez couvrir et 
le lorce de votre adversaire, 
□e plus, si aucuo circuit oe vous 
satisfeit. vous avez le possibilité 
de coostruire votre propre parcours 
et de le sauvegarder sur cassette 
ou disquette... Ainsi donc, les 
possibilités de couises sont 
pratiquement illimitées. 
L'écran se divise en deux parties, 
permet! a oi eiosi de visualiser la 
course de chèque concurrent : de 
plus, le vue totale du circuit 
mootre cl ei rement les positions 
respectives des concurrents .. Avec 
Scalextnc, vous evez entre les 
mains une bonne simulation, avei 
un graphisme plus que correct 





ACCESS II 

E.S.A.T. SOFTWARE 
Utilitaire 

Le lecteur de disquettes intègre à 
l'Amstrad (612B, 664) ou bien 
séparé de l'unité centrale 14641 est 
bien utile à ceux qui veulent traiter 
des fichiers. Malheureusement, les 
CPC ne sont pas pourvus d'une 
fonction fort intéressante : l'accès 
direct. Imaginons que vous ayez un 
fichier de 30 Ko. la recherche 
d'une fiche se fait par le 
chargement de tout le fichier en 
mémoire. Avec l'accès direct, la 



identique à celle de "OPEN" en 
BASIC Amstred. Elle possède 
3 paramètres : le nom du fichier, 
le nombre d'enregistrements 
maximum et la longueur des 
enregistrements (de 3 h 2551. En 
effet, avec l'accès direct, toutes 
les fiches doivent avoit la marne 
taille. Cela permet de les retrouver 
plus facilement. 

IDISCLOSE : an le devine, il s'agit 
de le fermeture du fichier. Celle-ci 
est obligatoire, sinon il y a parte 
de données. 

IDISCWRITE : après avoir ouvert 
un fichier, il faut écrire les 




recherche se fait sur le disque et 
seule la fiche concernée est mise 
n RAM. Cela entraîne un gain de 
place conséquent et limite la taille 
des fichiers è la capacité d'une 
" a de disquette (.170 Ko 
environl. 

Le programme Access II vous 
propose une gestion de fichiers en 
accès direct par l'intermédiaire de 
routines RSX. Les nouvelles 
instructions sont au nombre de 5 : 
IOISCOPEPJ : son action est 



données. DISCWRITE comprend 

3 paramètres ; un code d'erreur R. 

le contenu de l'enregistrement et 

le numéro de l'enregistrement. Le 

code d'erreur signale une anomalie 

survenue après l'utilisation de 

IDISCWRITE. 

lOISCREAD : il s'agit de la routine 

de lecture des données. Elle agit 

de la même façon que IDISCWRITE 

et possède le même nombre de 

paramètres. 

Dernière instruction : IDISCFIND 



permet de faire des recherches 
dans un fichier. Il suffit de définir 
quatre variables : R le code 
d'erreur, le contenu de 
l'enregistrement, le premier numéro 
de la recherche et le dernier 
numéro. La recherche peut porter 
sur l'enregistrement ou sur le 
numéro. 

Un programme de démonstration se 
trouve sur la disquette et vous 
donnera un exemple de ce qu'il est 
possible d'obtenir avec l'accès 
direct. Le menu vous propose la 
création d'un fichier, quelques 
utilitaires : chargement de USER, 
de lecteurs, augmentation de la 
vitesse du moteur. Un éditeur de 
secteur vous permettra de modifier 
des fichiers en altérant directement 
le contenu du disque. 
2 exemples, lecture et rechercha 
sur un fichier, vous permettront 
d'apprécier les capacités du 
programme. Transferts concerne 
les échanges de fichiers entre 
lecteurs. Aide et Quitter ne 
nécessitent pas d'explications 
quant à leurs fonctions. Pour 
utiliser Access II sur vos disques, 
il faudra charger le programme 
□ ISCMAM par MEMDRY 
&9470-110AD "OISCMAN", puis 
initialiser en tapant CALL &947D. 
Je me permets de décrire ces 
opérations puisqu'elles ne sont pas 
précisées en clair dans la notice. 
Un logiciel simple à utiliser et qui 
vous ouvre de nouveaux horizons. 



IMPRESSION 

E.S.A.T. SOFTWARE 
Utilitaire 



esseur d'une imprimante 
flambante neuve. La sortie de 
listing ou l'impression d'un 
message sur papier ne posent pas 
b problèmes grâce è LIST t! 8 et 
PRINT il B. En revanche, les 
justifications, les fabulations, les 
différents styles de caractères 
sont beaucoup moins accessibles. Il 

île en effet illusoire de 

parvenir à emmagasiner les suites 

interminables de CHRS même evec 

a nu cl comme support. 
Le logiciel "IMPRESSION" vous 
offre une série de RSX (une 
soixantaine) permettant toutes 
sortes d'acrobaties imprimables. La 
nombre de nouvelles instructions 
peut vous effrayer, mais le nom de 
checune d'entre elles a été choisi 
de manière è suggérer leur 
fonction. Ainsi NT AL provoque 
l'impression en "italique" alors que 
IAITAL supprime ce style de 
caractères. Chaque fonction 
possède son opposé signalé par le 
préfixe "A". Les fabulations 
horizontales et verticales ont aussi 
leur RSX précédant en cela les 
avances du pépier et las sauts de 
page, 

Quelques instructions plus 
exotiques : IBIP 1 qui fait sonner 
le buzzer plusieurs fois, IVNID qui 
règle l'imprimante en mode 
unidirectionnel. 

J'ai gardé le meilleur pour la fin : 
la recopie d'écran. COPYTEXTE. 
comme vous l'avez deviné, effectue 
uni recopie rapide de l'écran texte. 
COPYGRAPHIQUE permet une 
"hard-copy" de l'écran graphique 
en deux couleurs (encre et fond). 
Cette recopie est satisfaisante en 
MODE 2 où le nombre de couleurs 
est limité. Si l'écran utilisa les 
16 couleurs disponibles (MODE D), 
il sera difficile de rendre toutes les 
nuances et les dégradés avec de 
l'encre noire. C'est pourquoi une 
fonction "TRAME" a été ajoutée 
permettant de coder les couleurs 
sous forme de motifs 
géométriques. 

Sur un écran monochrome, on 
utilise ICIJUI.EUR ou INTRAME 
pour déterminer le numéro des 
couleurs présentes. Il ne resta plus 
qu'è lancer ICDPYTRAME ou 
INCQPYTRAME pour obtenir sur 
papier un dessin "coloré". Si vous 
n'êtes intéressé que par une 
portion de l'écran, COPYPART 
imprimera le motif choisi 
auparavant. Il ne reste plus qu'è 
faire une impression énorme en 
sélectionnant DOUBLECOPY. Vous 
obtiendrez une image "géante" sur 
deux feuilles qu'il vous faudra 

Impression vous facilitera sans 
doute la vie. En revanche, il veut 
mieux déjà avoir manipulé une 
imprimante car les explications 
fournies dans la notice ne vous 
seront pas d'un grand secours. 




TOP SECRET 

LORICIELS 
Aventure 

C h il r i| g (]' 

qui peut se révéler 

;, Vous apprenez à la 
radio qu'il vient de se passa r un 
coup d'Etal et que le Présidant a 

É enlevé... 
Vous connaisse; un des membres 
1e organisation secrète qui a 
décidé de le sortir de là : il 
s'appelle Manu. Malheureusement, 
celui ci est arrêté ! Dès lors, il ne 

e plus qu'à déambuler 
dans toute la ville à la recherche 
d'indices et de contacts 



intéressants, afin de récupérer le 
matériel nécessaire pour l'évasion, 
d'une part, et surtout 
l'indispensable mot de passe... 
I La version de ce logiciel sur PCW 
| est vraiment tri' 
u graphisme car l'écran 
monochrome n'altère en rien 
l'intérêt du jeu. Le problème se 
u du vocabulaire à 
utiliser ou non car, en effet, il n'v 
n guide bu haut de l'écran 
comme c'était le ces dans la 

n pour les CPC. De toute 
façon, il faut employer l'impératif 
et vous avez, meigré tout, une 
aide qui vous apportera (peut- 
Il quelques indices lorsque 
i par trop désespéré... 



ORPHEE 

LORICIELS 
Aventure 

La descente aux Enfers a été 
longue, très longua pour parvenir 
sur PCW. Mais (a y est, vous 
êtes enfin arrivé aux fins fonds 
des profondeurs et il ne vous rest 
plus qu'à effectuer votre voyage 
aux Enfers. 




Votre histoire a commencé tout 
bêtement, comme beaucoup de 
faits divers : vous ave; au un 
accident de voiture I... Vous avez 
alors ressenti un vide immense en 
S, puis une chaleur de plus en 
; intense jusqu'à devenir 
insupportable. Et c'est è ce 
moment que la rencontre s'est 
effectuée : Satan était lé, devant 
vous, "en chair et en os" I... 




Le face à face avec Satan est le 
but de ce fantastique jeu 
d'aventure, mais, avant d'en arriver 
lé, il vous faudra parcourir près 
d'une centaine d'endroits différents 
dans lesquels vous n'aurez pas 
moins de 24 objets à prendre et 
qui vous seront indispensables pour 
arriver bu bout du voyage... 

La qualité du graphisme sur PC VU 
est la même que pour Top secret, 
c'est à- dire très bonne. Ce moi s- ci, 
vous avez donc la possibilité de 
vivre deux grandes aventures. 




THE ADVANCED 
OCP ART STUDIO 

RAINBIRD 
Utilitaire 

Rainbird avait déjà frappé un grand 
coup avec Thg Musc System. Il 
récidive en publiant un utilitaire de 
dessin réserva au* grosses 
mémoires, c'est à dire aux 612B ou 
aux 464 et 664 éqwpês d'une 
extension 64 K. 

Après ï introduction d'un mot de 
pesse choisi aléatoirement dans le 
manuel, on pesse aux choses 
sérieuses Une barre ne menu 
appareil au dessus d'un écran 
blanc. Je vous propose, pour 
commencer, une petite 
manipulation. Manœuvre; le 
curseur grâce au |0YSHck ou aux 
touches fléchées. Le déplacement 
est portait : pas de clignotements 
la |ui ta position se tait sans 
bavures. A propos de 
déplacements, la souris AMX peut 
eue gérée par le piogremme. Avec 
te bébette sous les doigts, on peut 
presque se sentir sens le peeu 
d'un propnêteire de Mac. Pointe; 
donc l'option MISC. Cliquez avec le 
bouton de tir ou la barre espace, 
un menu déroulent vous propose, 
enue autres, le chou du mode 
écran. Sélectionne; le MODE 0. 
Puis, aile; lusqu'à l'option Hit, 
faites un catalogue et choisisse; le 
fichier RAYTRACE. le dessin qui 
apparaîtra alors ne vous laissera 
plue aucun douta sur les capacités 
graphiques de l'Amstrad. 
Voyons une é une les options 
offertes 

PHINI ; c'esi une recopie d'écran 
sophistiquée. Jugeien plutôt : 
l'impression peut se faire en simple 
ou double densité avec la 



restitution des couleurs par 
tramage : on peut agir sur tas 
.usnl.ca'ions les marges et le 
centrage, te taille en X et en Y de 
la recopie. Le "OUMP" est 
possible sur des fenêtres Le choix 
de l'imprimante est possible entre 
DMP-1. OMP2000 ou EPSON. 
FILE : cette option auwse toutes 
les manipulations habituelles des 
fichiers : effacement, catalogua, 
chargement, seuvegarde. les 
images peuvent être composées ou 
non la capacité 
d'images sur disques est de 56 



fichiers et il est possible de 
charger 10 dessins simultanément 
en mémoire II est préférable de 
sauver les encres de vos œuvres 
grâce à l'option Palette, vous 
récupérerez ainsi les couleurs 
d'origines lors d'un chargement 
ultérieur. 

PALETTE : le choix des encres est 
effectué dans cette partie, avec la 
possibilité de produire des couleurs 
clignotantes. 

PAINT : permet de sélectionner les 
"crayons" employés, la forme des 
stylos (parmi 16 possibles), le 
forme du jet de l'aérographe 
(8 options) et sa vitesse. 
Les pinceaux sont représentés par 
des motifs très colorés. On trouve 
un œil, une bouche, un mur de 
briques et quelques dessins plus 
abstraits. Si l'une des 15 brosses 
ne vous convenait pas, il suffirait 
d'utiliser l'éditeur de formes pour 
créer un motif personnalisé. 
MISC est l'abréviation de 
miscellaneous (divers). Effacement 
de Té cran, visualisation de l'écran 
entier, différents m ou es 
graphiques, protection des encres 
(utile lors du changement de 
mode), ainsi que l'entrée de 
paramètres supplémentaires (type 

affichage des coordonnées) sont 
disponibles dans ee menu. J'allais 
oublier la sauvegarde du 
programme sur disque. 
UNDO : est la commande miracle. 
En cas d'erreur, elle efface la 
dernière action menée. 
WINDOWS : c'est une des options 
les plus riches. Elle permet de 
définir les encres de la Fenêtre, de 
choisir la taille de cette Fenêtre, 
d'exclure certaines couleurs. 



I L'option MULTIPLE exécute des 
actions répétées sur les fenêtres 
telles que : rutations 1114, 112, 
3I4|, échange des encres, re- 
i dimensionnement. Les options 
I cooper copier- coller "charcutent" 
l'écran. Dernières options : 
I chargement, sauvegarde da 
< fenêtres et modes de recouvrement 
I0R, XOR, AND). 
FILL : cette fonction remplit des 
surfeces fermées ou des couleurs 
d'une teinte ou d'un motif choisi à 
l'avance. Elle possède quelques 
variables telles que le remplissage 
total ou par trame. Ici encore, on 
trouve un éditeur permettant la 
création des motifs. 
MAGNIFV ; elle permet 
3 grossissements : X2, X4, Xa 
avec déplacement sur tout l'écran 
et modification au pixel prés, avec 
ou sans grille {en mode X8I. 
TEXT : c'est ici que l'on définit le 
format des lettres à inscrire sur 
l'écran. Il est possible d'aller 
jusqu'à trois fois la taille normale, 
d'écrire dans toutes les directions, 
de changer une police de 
caractères ou de créer un nouveau 
jeu. 

SHAPES : les formes suivantes 
sont présentes : ligne continue, 
rectangles, triangles, rayons, 
cercles, ellipses, le tout avec 
option élastique ou non. 
Je pourrais continuer ainsi la liste 
des options pendant plusieurs 
pages. OCP est un des logiciels 
graphiques les plus perfectionnés 
que je connaisse. Sa facilité 
d'utilisation et sa puissance vous 
permettront, sans nul doute, 
d'atteindre des sommets dans fart 
pictural sur AMSTRAD. 




TRUCS ET ASTUCES 



POST SCRIPTUM 

Daniel VANDENBROUCKE, l'auteur de 
PARTICIP CPC HS n° 3, nous fait part 
d'une petite modffication à apporter à 
son programme pour qu'il fonctionne 



Réécrire la ligne 480 comr 

480 DATA '" Les chiots que j'ai (i 
étaient mignons.", 

ii,1, chiots, oui, o 



Ce qui revient à dire que les "non, non" 
de la version pnk,éïlentc deviennent des 



TRONCATURES 

Philippe LHOSTE, du CTISTAT de 
SATORY, fait un sort à certaines bogues. 
De même, explique t il, que 1/3 n'a pas 
de représentation limitée en décimales, 
certains nombres ont un nombre de déci 
maies indéfini en binaire, d'où troncatu- 
res et... erreur. Ce défaut est inévitable 
et commun a toutes les machines. 

FORMULES 

Généreux, Philippe LHOSTE vous offre, 
d'abord une simplification des fonctions 
ARCSIN(x) et ARCCOS(x) (les plus cour- 
tes sont les meilleures), que nous vous 
avions proposées dans un précédent 
numéro, ensuite les formules hyperbo- 
liques. 

ARCSIN(x) = ATNIx/SQR(1-x*x)) 
ARCCOSfx) - pl /2-ARCSIN(x) 
SINH(x) = <EXP(x)-EXP(-xl>/2 
COSH(x) - (EXP|x) + EXP(-xi)/2 
TANHtx) = (1-EXP(-2*x))/(1 +EXP 

(-2*x)| 
ARGSINH(x) = LOG(x + SQR(x*x+D) 
ARGCOSHIx) = LOGlx <■ SQR(x*x-1 1) 
ARGTANH(x) = LOG((1 + xl/(1 -x))/2 

Et on est prié de ne pas se mélanger les 
pinceaux dans les parenthèses I 

FORMATEUR, EXPLOITEUR I 

Non, il ne s'agit pas du nouveau slogan 
entendu entre Bastille et Nation, mais 
tout simplement de deux petites routines 
qui vous feront gagner de la place sur 
vos disquettes. De 1 78 Ko, vous passe- 
rez, d'un seul coup d'un seul (enfin pres- 
que], à 191 Ko, soit un gain de 1 3 Ko. 
Voyons d'abord le formateur qui récu- 
père les pistes 40 et 41. 

10 FOR N = 1 TO 51 

20 READ A$:POKE X.VALC&" + A$) 

30 NEXT N 

40 CALL &0F80 

50 DATA 6,9, 3E,C1,21,b3, F, 23,23,77, 

23,36 
40 DATA2,23,3C,10,F6,AF,F5,21,b3, 

F,E5 
50 DATA 11, 4,0,6,9,77,1 9,1 0,FC,57, 

1E,0 



60 DATA E1,E,C1,DF,bO,F,F1,3C,FE, 

2A,20 
70 DATA E3,C7,42,C0,07 

Ne soyez pas surpris si le programme fait 
un RESET après formatage (DATA) 
d'une face. Voyons maintenant l'exploi- 
teur qui doit être, impérativement, exé 
cutè avant toute opération sur le disque. 
Laurent KUTIL, qui nous envoie ce truc, 
recommande de l'incorporer à vos 
LOADERS. 

10 OPENOUT-X" 

20 POKE &A8A8,&FF 

30 POKE &A895,PEEKI&A895) + 13 

40 CLOSEOUT 



INTERVALLES 

31 décembre 1999- 10 juin 1987. Oui, 
c'est une soustraction I Sauriez-vous, 
rapidement et sans trop vous casser la 
tête, calculer le nombre de jours qui nous 
séparent de l'an 2000 ? Gérard BUGEL 
de BRIVE, lui, entre les données sur son 
6128 et obtient, instantanément, le 
nombre exact. De plus, vous saurez, 
avec le même programme, quel jour sera 
le 1 er janvier 2000. Le programme est 
concentré, mais bonjour les fonctions 
logiques ! Soufflez dans l'alcootest avant 
de vous mettre au clavier. Un dérapage 
est si vite arrivé I 

10 'fnj% = n° du jour, fnm% = n° du 

20 'fna% - n D de l'année 

30 'ncj = code du jour 

40 'fnjour$ = jour de la semaine 

50 DEF FNj%-VAL(LEFT$(date$,2l) 

60 DEF FNm% = VAUMIDSldateS. 
4,2)1 

70 DEF FNa% = VAL(RIGHT$ 
(dateS, 41) 

80 DEF FNjourS=jourS(FNcj + (FIX 
(-FNcj/7)"7)) 

90 DEF FNc|-365'FNa% i-FNj% + 
31*(FNm%-1) + (ABS(FNm% 
<3l"(FIXIIFNa%-1)/4-FIX(0.75" 
(FlXi(FNA%-1)/100) + 1 ))))+ IABS 
(FNm%>2)" 

|-FIX«FNm%'0.4) + 2.3) + FIX 
(FNa%/4)-FIX(0.75-(FIXlFNa%/ 
100) + 1)))) 
100 RESTORE 120 
110 FOR X = TO 6:READ jourS(x); 



NEXT 
1 20 DATA SAMEDI, DIMANCHE, LUNDI, 
MARDI, MERCREDI, JEUDI. 
VENDREDI 



COMPATIBILITE 

Très intéressé par "Les mêmes program- 
mes pour tous les CPC" de Daniel Le 
Barbier. CPC n" 21 (avril 87), Robert 
CABANE de PARIS 1 1 expose ses trucs 
pour obtenir GRAPHICS PAPER et GRA 
PHICS PEN. 

Pour PEN, faire PLOT3l9,319,couleur. 
Cela fixe la couleur mais, pour l'affi- 
chage, il faut, au préalable, placer le cur- 
seur graphique au bon endroit. Pour 
PAPER, faire ORIGIN0.0, 0,0,0,0 puis 
CLG 1, ce qui a pour effet d'afficher un 
petit trait en bas à gauche sur l'écran et 
met l'encre graphique au n° 1. Mais 
mieux vaut, sur 464, faire POKE 
&B338.PEN et POKE &B339, PAPER. 
Dans ce cas, on travaille sur un masque. 
Si l'on utilise des valeurs autres que 0, 
1 , 240 ou 255, on obtient des tracés en 
pointillés simulant MASK 
Pour le PASCAL HI-SOFT (concurrent de 
TURBO et très rapide en graphisme), il 
est possible d'appeler les routines systè- 
mes à l'aide de ce type de syntaxe : 



sr(#.. 



PHLYCTENES 

Pour les inconditionnels d'ULTIMATE 
FIGHT (CPC n° 17), dont les doigts 
seraient sujets à des échauffements pro- 
noncés et dont le clavier se refuse à subir 
les derniers outrages, Michaël HOFFERT, 
de THIONVILLE, propose les modifica 
tions suivantes : 



280 IF JOYI0l = 


■ 1 etc. 


290 IF JOYI1I- 


= 1 ,,. 


300 IF JOY(0) = 


2 ... 


310 IF JOY(1) = 


■2 ... 


320 IF JOY(0) = 


^8 ... 


330 IF JOY(1) = 


■ 4 ... 


340 IF JOY(0)< >8 ... 


350 IF J0Y(1)<>4 ... 


370 IF JOY(0) = 


^8 ... 


380 IF JOY(1) = 


-4 ... 


Désormais, c'es 


rt le joystick qui 



APPEL A BIDOUILLE 

Oui serait capable de réaliser un montage 
pour la conservation de la date du 
CP/M ? 



Pierre TACONNET 



Nous allons voir ce mois-ci, dans la suite 
de notre étude des fonctions du BDOS 
de CP/M, les fonctions de lecture et écri- 
ture en mode séquentiel, plus quelques 
fonctions diverses. 



FIXATION DE L'ADRESSE 
DES TRANSFERTS DISQUE 

Afin d'expliciter le fonctionnement des 
fonctions de lecture et d'écriture, il nous 
laut parler de la fonction 26 qui permel 
de fixer l'adresse îles transferts disque. 



En effet, lors d'une lecture Béquentlette 
par exemple, CP/M va lire un secteur 
logique de 128 octets et le contenu de 
ce secteur sers mouvementé à l'adresse 
courante des transferts disque, Lors du 
démarrage de CP/M, cette adresse vaut 
80H, mais la fonction 26 permet de fixer 
cette adresse de transfert où vous le 
désirez, c'est à-dire le plus souvent dans 
une zone réservée à cet effet dans votre 
programme. 

Si cela est nécessaire, cette adresse peut 
être modifiée avant chaque lecture, pour 
charger un fichier en mémoire, par exem- 
ple, ou pour changer de zone de trans 
fert lorsque l'on passe d'un fichier à un 
n programme qui travaille sur 



trement à lire. 

Chaque appel successif à la fonction 2 

va donc lire 128 octets du fichier et le 



plusi 



s liLhie 



; se 



i sûr, dès que votre piogiarr, 
termine, CP/M réinitialise cette adresse 
à 80H. 

En entrée: C-26 DE- contient 
l'adresse des transferts disque à fixer. 
En sortie . pas de code retour. 

LECTURE SEQUENTIELLE 
D'UN FICHIER 

Cette fonction permet la lecture en 
séquentiel d'un fichier préalablement 
ouvert par la fonction 15. Rappelons 
que, pour CP/M, un fichier est un ensem- 
ble d'enregistrements logiques de 
128 octets (un "secteur" CP/M), 
Donc, après la fonction 1 5 d'ouverture, 
le fichier est ouvert et le pointeur dans 
le fichier est fixé sur le premier enregis- 



e pointeur d'un 



fonction 26 et dèplat 

En entrée : C = 20 DE = contient 
l'adressB d'un FCB d'un fichier ouvert. 
En sortie : A contient si la lecture s'est 
effectuée sans erreur 
En CP/M 2.2 une valeur différente de 
signale que l'on a atteint la fin du fichier. 
En CP/M Plus les différentes valeurs pos- 
sibles de A sont : 

- 01 : fin de fichier. 

- 09 : FCB invalide. 

OA ; disquette a été changée. 

- FF : erreur physique, code dans H. 

ECRITURE SEQUENTIELLE 
D'UN FICHIER 

Cette fonction permet d'effectuer des 
écritures séquentielles dans un fichier 
préalablement ouvert, soit par la fonction 
15, soit par la fonction 22. 
Après l'ouverture, le pointeur dans le 
fichier est lixé sur le premier enregistre 
ment existant (fonction 15) ou à créer 
(fonction 22). 

Chaque appel successif à la fonction 2 1 
va donc prendre les 1 28 octets se trou- 
vant à l'adresse des transferts disque et 
les écrire dans le fichier concerné. Si le 
fichier était un fichier non vide et exis- 
tant déjà, les écritures successives écra- 



sent 






INITIATION A CP/M 



dépasse la fin du fichier tel qu'il existait 
à l'ouverture, celui-ci augmente en taille 
et la nouvelle fin de fichier est après le 
dernier enregistrement écrit. 
En entrée :C = 21 DE= contient 
l'adresse du FCB d'un fichier ouvert. 
En sortie : A contient le code retour, 



i pas de 



r et r 



I dans 



cas 



contraire. 

Sous CP/M Plus les codes possibles 

sont : 

- 01 : plus de place dans le catalogue 
(en cas de création d'une nouvelle exten- 
sion du fichier). 

- 02 : plus de place sur le disque pour 
les données, 

- 09 : FCB invalide. 

- OA : disquette changée. 

- FF : erreur physique (code dans Hl 

CREATION D'UN NOUVEAU FICHIER 

Lorsque nous avons décrit la 
fonction 15, nous avons précisé qu'il 
s'agissait de l'ouverture d'un fichier déjà 
existant. La fonction 22 permet de créer 
un nouveau fichier C'est à -dire qu'elle 
est identique à la fonction 1 5 sauf qu'il 
faut que le fichier spécifié soit inexistant 
dans le catalogue et que cette fonction 
crée le premier poste catalogue pour ce 

En entrée: C = 22 DE= adresse d'un 
FCB correctement initialisé 
En sortie : A contient une valeur de à 
3 si l'opération s'est effectuée correcte- 



ment et OFFH dans le cas contraire. 
Sous CP/M Plus le registre H contient le 
code erreur (voir fonction 15). 
La figure 1 vous donne un exemple corn 
plet d'utilisation de ces fonctions. 
Ce programme recopie un fichier dans un 
autre, quelqu'en soit le contenu, texte ou 
binaire, car la copie se fait par "sec- 
teurs" CP/M de 128 octets. 



CHANGEMENT DU NOM D'UN FICHIER 

Cette fonction permet de changer le nom 
d'un fichier existant par un autre nom 
qui, lui, ne doit pas correspondre à un 
fichier déjà présent dans le catalogue La 
zone pointée par DE contient dans ses 
16 premiers octets, le nom du fichier à 
renommer, dans le même format que 
pour un FCB. 

Les 16 octets suivants contiennent le 
nouveau nom du fichier également dans 
le format d'un nom de fichier de FCB. 
mais avec le premier octet toujours à 

En entrée : C = 23 DE= adresse d'une 
zone contenant l'ancien nom et le nou 
veau nom en format FCB. 
En sortie : A contient un code retour 
équivalent à une ouverture de fichier, 
c'est-à-dire de à 3 en cas de succès 
et OFFH en cas d'erreur 
Sous CP/M Plus en cas d'erreur, le régis 
tre H contient le code de l'erreur 
La figure 2 vous donne un exemple d'uti- 
lisation de cette fonction. 



LECTURE DU VECTEUR D'ETAT 
DES DISQUES 

Cette fonction permet de connaître les 
disques qui sont en ligne. Un disque "en 
ligne'' est un disque qui a été accédé. 
Ainsi, dans un système à 2 lecteurs de 
disquette, si vous n'avez pas effectué 
d'accès au lecteur B :, celui-ci n'est pas 
en ligne. Cette fonction ne permet donc 
pas de connaître le nombre de lecteurs 
maxi possibles dans un système. 
En entrée : C = 24 

En sortie : le registre HL contient le vec- 
teur des disques actifs 
Le bit de L correspond au disque A:, 
le bit 1 au disque B;... jusqu'au bit 7 de 
H qui correspond au disque P:. 
Si le bit est à 0, le disque n'est pas en 



ligne. 

Si le bit 



s 1. le disque 



LECTURE DU NUMERO 
DU DISQUE COURANT 



i tigru 



o du dis- 
courant. (A: = B: = 1...| 
mois prochain, nous continuerons 
; quelques fonctions diverses, mais 
out avec les lectures et écritures en 
3s RANDOM (accès relatif). 



Cette fonction permet de c 


anna 




le disq 






su 


lequel c 


n effectue les opérât 




lorsqu 


aucun disque n 


'est 


du 


is les n 


ams de fichiers 




Fn 


entrée 


C = 25 




En 


sortie : 


A contient le nu 


mero 



GOMOUT 


equ 


2 


PRIMTB 


ë"3U 


9 


OPEN 


aqu 


15 


CLOSE 


omu 


lb 


CREPITE 


eou 


22 


DELETE 


eau 


19 


REPiD 


&em 


20 


WRITE 


equ 


21 


BETDMPt 


*qu 


26 


CP 


r. Q u 


0DH 


L^ 


equ 


0OH 



flff i 



6D0S de C 

un irjrsae 

Ouvertu r» d' un -f i G 
Fermeture d' un f l e 
Créât .on d 1 un -f . ch 
Suppresis. on f ichie 
Lecture- se-quent i ei 
écriture senuentie 
Fi k? adresse des t 

Retour chariot. 
PI la i wm-. 



d^MSGDEB 
Ci PRINTS 
BDOG 



Erreurl 

C. DELETE' 
d, FCBOUT 
BDOS 

ciCRERTE 
d. FCBOUT 
BDOS 

Erreur2 
d, BUFFER 

oSETDMft 
BDOS 



d REftD 
d, FCBIM 
BDOS 

FinDeF, ,:h 
c, WRITE 
d.FCBQUT 
BDOS 



Fer Met il r es 



1 1 


î Fin de 


z Erreyri 


; won sf 


d,FCBIN 


; Feri-tet 


i t. CLOSE 




1 1 BDDS 




d. FCBOUT 




i G, CLOSE 




i i BDOS 




F * 





Kl 


d, t'ISGËRRl 


; H»srsb 




C, PRINTS 


; ftt-Mt 




BDOS 


: sdr 


° 


Fit! 


! *t 


«i 


d. MSGERR? 


ï Reœea 


" 


ErfsHir 






d, MBGERP'î 


: HM»> 




c, PRINTS 


; Pffic 


1 1 


BDOS 




D 


F-BM-w»t#rea 


; «4 f* 


Vr 


d, MSGËSR4- 


î «*a«a 


a 


Mffi3EtF#rw© 





INITIATION A CPM 







ri. r-ISGFlN S fi-f+.che m««sa3.© de Fin 




IflVi 


e* PRINÏS 




ce i i 


BDQS 




«V i 


.-, a 




eai i 


BDOS 


r-ISGHRff-1. 


: db 


CR, LF, ' Erreur ouverture fichier e*i erit ree, fc' 


MSGFRR/ 


: db 


CR. LF, ' E: r re ur création fichier en sortie.*' 


MSS.ËRR3 


: db 


DRiLF, ' Kneur écriture sur fichier en sort 1 e, #' 


MSBËRR4 


; db 


CR, LF-, ' Erreur lecture sti-r ficher en entrée.*' 


MSGI3EB s 


db 


CR. LF, LF, ' Début, du prog raifime' > CR, LF - LF = ' *' 


MSGFÎW: 


db 


CR. LF. LF, ' F i n du HT m r amme' ■> CR, LF. LF, ' S' 


FCS fNl 


db 


a ; FCB du f ch,er m entrée. 




db 


' ES&fi I 




db 


' HSM ! 




db 


a 




Cl5 


3b-i.*-FCBIN) 


F'ceauT s 


db 


13 ! FCB du i- i i::h.er en sort , e. 




db 


'ESSAI 




db 


1 Sfiv' 




db 







dS 


3S-C*-FCBGUT) 




db 


" Bu + -fer = ' 


BUFFERs 


ds 


1 28 




db 


'Fin huffer't 



ï E^emPie d'ut 




fonct i en 23 








ËtaQS eau 


5 


: flppei du BD03 de CfVS. 








REftfiMs eau 


23 


, c h „„ «m #m f,cm« 








Tï' 


r, RENAME 
d,FCBREN 

BDOF 

Erreur] 


; Med i f i e nom du f i ehlsf 
î F ■ ch f,»r non ttouvs, 


,,.«« 


„™„ 




ï suite d,. P ro 


WMrt* 










i-i BRFM: db 


a 

' FiSSiHÏ 
' ASM' 
0, 0, 0,0 
'3 

' E53SÏ 
' GLD 1 

a, a, a, si 


î Nom du f ,chi*r * rermon 
! Moiiveau non 








end# 













programma™ 

RESTAURATION DE 
LA MEMOIRE BASIC 



Bernard BESSE 



Le manuel du CPC 464 dit ceci à propos de HIMEM : 

"Ayant de redéfinir l'octet le plus haut avec la commande MEMORY, il est souhai- 
table d'écrire mm = HIMEM. Vous pourrez après retourner à la capacité de mémoire 
précédente avec la commande MEMORY m." 

Le manuel mentionne donc la question de la restauration de la mémoire et c'est 
bien. 
Malheureusement, le problème est d'une part mal posé, d'autre part mal résolu. 



Nous proposons une procédure tout ê 
fait différente de restauration i 
Mais, auparavant, nous devons i 
aux 3 questions suivantes : 

— Est-il utile de restaurer la rr 
(autrement que par RESET] ? 

— En quoi le problème est-il m 
dans le manuel ? 

— Pourquoi est-il mal résolu ? 

FAUT-IL RESTAURER 
LA MEMOIRE ? 






n cas de RESET, tout programrr 
e" de l'organisation mémoii 
par son prédécE 



ir. Cette orga- 
■oi.ujellement, être modi- 
fiée par des commandes en mode direct. 
Cette "passation de suite" se fait évi- 
demment pour un même programme 
d'un RUN au RUN suivant. 
L'erreur bien connue "improper argu- 
ment" intervenant au 2 e RUN d'un pro- 
gramme commençant par : 



tient au fait que le 2" RUN hérite des 
zones SYMBOL et MEMORY créées par 
le 1" et que le BASIC refuse alors de 
créer une 2" zone SYMBOL. 
La mémoire BASIC peut être réduite par 
is zones suivantes : 



SYMBOL AFTER (0 à 1 zone) 
MEMORY 10 à 3 zones) 

FICHIER (0 à 1 zonel 

Nota : s'il existe une zone FICHIER, il 
existe au moins une zone MEMORY, car 
nous supposons une pratique sans faille 



Voici un exemple de configuration à 5 
zones qui peut surprendre, mais qui est 
tout à fait possible. 



Il faut, pour la réaliser, commencer par 
faire SYMBOL AFTER 256 car il ne peut 
y avoir qu'une seule zone SYMBOL 
AFTER, 



BAS 

(souvent 1 octe 
(4096 octets) 



(B 



tsj 



Memory A 
Ram System 



18 à 2048 octetsl 
(A octets) 
HAUT 



:ntage. 



e réservation 



Il est probable que les petits programmes 
n'ayant pas de besoins particuliers pour 
ront s'accommoder d'un 
Mais pour : 

— les gros programmes, 

— ceux qui ont besoin d'u 
d'espace à une adresse précise, 

— ceux qui ont besoin d'une zon 
SYMBOL AFTER plus importante, 

il ne peut être question de conserver l'o 
gamsation léguée, par le programm 
précédent. 



Par ailleurs, la solution bien connue qui 
consiste à faire RESET pour réinitialiser 
la mémoire n'est pas sans inconvé- 
nients : 

— effacement des instructions KEY, 

— effacement du programme en cours, 

— pas de possibilité d'écrire RUN et 
LOAD dans un programme pour appeler 
le programme suivant. 

On peut donc affirmer qu'il est très sou- 
haitable de pouvoir restaurer 
il que par RESET. 



EN QUOI LE PROBLEME 
EST-IL MAL POSE ? 

Il est mal posé parce qu'il est plus logi- 
que de restaurer en DEBUT qu'en FIN de 
PROGRAMME, 

En effet, pour un programme donné, la 
restauration au début donne la certitude 

convenable. 

Dans l'autre cas (restauration en fin), 
cette certitude ne peut s'obtenir qu'en 
programmant la restauration mémoire 
dans TOUS les programmes susceptibles 
de précéder le programme concerné. 
De plus, il faudrait s'interdire l'utilisation 
des ordres MEMORY, SYMBOL AFTER 
et OPEN en mode direct. 
Pour illustrer le caractère sournois d'un 
oubli, voici un petit exemple : 
Supposons qu'un programme hérite 
d'une zone MEMORY 30000 et qu'il ait 
besoin d'une zone MEMORY 40000. 
Le programmeur qui suit le Manuel 



mm- HIMEM 
MEMORY 40000 



mm 

' la mémoire 
monte à 40000 
(sans problèmes 
supposons-lel 

' la mémoire 
baisse à 30000 

' léguée au pro- 
gramme sui- 
vant. Bra i/o I 



LA PROCEDURE"mm = HIMEM 

* MEMORYmm" 
DU MANUEL NE MARCHE PAS 

Procédons à un certain nom- 
bre d'essais dans les conditions ci- 
dessous : 

a) Par hypothèse, les instructions suivan- 



tf-ir.a MfMOKV rr 



les font partie de chaque essai : 

- RESET B t SYMBOL AFTEB 256 
avant chaque essai. 

- PRINT HIMEM au tout début et à 
l'extrême fin de l'essai. 

b) Les caractères V- délimitent les ins- 
tructions centrales (non écrites si elles 
sont sans intérêt). 

c) Les résultats sont notés : 
OUI si HIMEM fin - HIMEM deb 

NON si ERREUR ou si HIMEM différents 

Conclusion des essais 

Le procédé du manuel est à rejeter pour 
les raisons suivantes : 

- MEMORY ne peut pas récupérer une 
zone SYMBOL AFTER (seul SYMBOL 
AFTER 256 peut le faire). 

- MEMORY ne peut pas récupérer une 
zone FICHIER OUVERTE (seul CLO- 
SEOUT et/ou CLOSEIN peuvent le faire). 

- MEMORY ne peut récupérer une 
zone FICHIER FERMEE (du genre OPE- 
NOUT"bidon") qu'à une seule 
condition : 

Au moment où l'ordre MEMORY va être 
exécuté, la valeur de HIMEM doit être 
celle créée par l'ordre OPENOUT (avant 
le MEMORY HIMEM-1). 
C'est ainsi que l'essai n° 4 réussit si l'on 
remplace MEMORY mm par MEMORY 
HIMEM+ 1: MEMORY mm 

UNE AUTRE SOLUTION 

La solution du problême réside dans l'uti- 
lisation de 2 adresses gérées par le 
BASIC. 

Ces 2 adresses se trouvent en AE7B/C 
(il s'agit tout simplement de HIMEM) et 
le couple d'octets voisin en AE7D/E. 
Nous appellerons MEMOIRE LIBRE (ou 
plutôt mémoire libérable par MEMORY) 
et en abrégé MMLIB cette 2" adresse. 

Utilisation de 
MMLIB et HIMEM 

MMLIB est la valeur maximum du para- 
mètre que l'on peut associer à MEMORY. 
Nous avons toujours MMLIB > = HIMEM 
En conséquence : 
Si HIMEM < MMLIB on doit faire 



MEMORY mmlib 

Si HIMEM =mmlib, MEMORY ne doit 
plus être utilisé (car l'ordre MEMORY 
HIMEM n'a aucun effet). 

Nous avons alors 2 cas de figure théori- 
quement possibles : 

a) Nous sommes 1 octet plus bas qu'une 
zone FICHIER OUVERT. 



b) Nous sommes 1 octet plus bas qu'une 
zone SYMBOL AFTER. 

Puisque nous restaurons en début de 

programme, le cas a est éliminé car 

aucun fichier n'est ouvert en début de 

programme. 

Reste le cas b que l'on traite par 

SYMBOL AFTER 256. 

Ceci se traduit par les 2 lignes de BASIC 



100mmlib = PEEK(&AE7D) + 2 56* 
PEEK(&AE7E):IF HIMEM < mmlib 
THEN MEMORY mmlib:GOTO 100 

200 hiold = HIMEM: SYMBOL AFTER 
256: IF HIMEM>hiold THEN 100 

On pourrait, pour arrêter le processus, 
comparer HIMEM à la valeur MAXI de 
42647 (ou 44031 pour les cassettes), 
au lieu de vérifier que sa valeur reste 
égale à HIOLD. 

Malheureusement, l'utilisation de cer- 
taine^) routine(s) du système d'exploi- 
tation a pour résultat apparent de dimi- 
nuer le MAXI en le rendant égal à la 
valeur du HIMEM courant. 
C'est en effet le regrettable comporte- 
ment de la routine &BB4Ë utilisée 

Ainsi, le petit programme : 

RESET 

SYMBOL AFTER 256 



100 PRINT HIMEM' 42747 à la 1 are 

itération 
100 ' puis 42619 puis 

42491 etc. 
110 SYMBOL AFTER 240 
120 CALL &BB4E 

1 30 SYMBOL AFTER 256 ' ne fait rien 
(HIMEM non 



grignotera la mémoire BASIC à raison de 
128 octets à chaque itération avec 
"memory full" pour HIMEM = 1 6507. 
L'explication peut être considérée 
comme la suivante : 
Call &BB4E met à zéro l'octet &B295 
Cet octet a la valeur 255 lorsqu'une 
matrice de caractères est définie, la 
valeur après un SYMBOL AFTER 256. 
Par ailleurs, l'octet B294 contient le 
numéro du 1 el caractère "utilisateur". 
Par exemple, on aura : 

- Après SYMBOL AFTER 240 : 
B294-240 et B295 = 255 

- Après SYMBOL AFTER : 
B294^0 et B295 = 255 

- Après SYMBOL AFTER 256 : 
B295 = et B294 = 

On voit que la valeur de B295 permet de 
distinguer SYMBOL AFTER 256 et 
SYMBOL AFTER qui sont notés tous 
deux zéro en &B294. 
Call &BB4E fait en quelque sorte 
"croire" au système qu'on vient de faire 
un SYMBOL AFTER 256, alors qu'il n'en 

Sur cette base frauduleuse, le système 
considère alors que MAXI = HIMEM. 
Nous n'avons pas trouvé un moyen sûr 
de contrecarrer les agissements délétè- 
res de &BB4E (que cette routine soit 
appelée à partir du BASIC ou d'une rou- 
tine machine). 

Il V s donc lieu, soit de s'en tenir aux 2 
lignes de BASIC précédentes, sort d'ajou- 
ter une 3° ligne pour "prévenir". On a 

100 mmlib = PEEK(8 i AE7D) + 256-PEEK 
(&AE7EIIF HIMEM<mmlib THEN 
MEMORY mmiibGOTO 100 

200 hiold -HIMEM: SYMBOL AFTER 
256: IF HIMEM > HIOLD THEN 100 

300 MAXI =42747:IF HIMEM<maxi 
THEN PRINT"HIMEM";HIMEM; 
'•<"; MAXI;"-Faire RESET" 

La valeur de MAXI est bien entendu à 

remplacer par 44031 pour les systèmes 

à cassette. 

Il est souhaitable de stocker ces 3 lignes 

sur disque (ou sur cassettel sous format 

ASCII. 

Elles pourront être exécutées par RUN ou 

intégrées par MERGE aux programmes 

qui ont besoin d'une restauration 

Notons que MMLIB, HIOLD sont des 
variables réelles. Il faudra donc fusion- 
ner ces 2 ou 3 lignes avant un ordre 
DEFINT éventuel. 

Les articles suivants, parus dans CPC, 
précisent certaines questions : 

- Le bug de l'openout (Michel Archam 
bault) : n° 3, p. 48. 

- Fichiers (Michel Archambault) : 
n° 18. p 22. 

- Symbol After (Michel Archambault) : 
n° 12, p. 44. 

- Test (Patrick Guyon) : n° 19, p. 89.